Używam Linuksa i Maca i wkrótce nauczę kilku rzeczy z linii poleceń.
Co mogę zainstalować w systemie Windows, aby uzyskać okno terminala najbardziej podobne do podstawowej powłoki Mac / Linux Bash?
Chciałbym również móc zdefiniować .bash_aliases, jeśli to możliwe.
putty
łączyć się z prawdziwym serwerem Linux. w systemie Windows zawsze byłem zarówno niechętny, jak i kuszony do używaniacygwin
, niechętnie z powodu mojej niezdarnej instalacji. Ale osobiście uważam, że jest wygodniejszy w użyciu niż msys i szybszy niż vm. po zainstalowaniu cygwin okazuje się w jakiś sposób przenośny, wystarczy skopiować jego katalog, jednak utworzy nową nazwę użytkownika na każdym komputerze / użytkowniku na podstawie nazwy użytkownika systemu Windows (przynajmniej domyślnie). Należy jednak pamiętać, że ponieważ cygwin / msys można postrzegać jako niestandardową „dystrybucję”, może brakować niektórych [opcjonalnych] przełączników poleceń. przetestuj je.Odpowiedzi:
Możesz zainstalować Cygwin lub MSYS / MinGW , lub możesz zainstalować pełną dystrybucję Linuksa na maszynie wirtualnej (na przykład za pomocą VirtualBox ).
źródło
Możesz teraz zainstalować Podsystem Windows dla systemu Linux, który pozwala na uruchamianie natywnej powłoki systemu Linux w trybie użytkownika i narzędzi w systemie Windows . Pozwala to na uruchamianie powłoki Bash bezpośrednio w systemie Windows i jest oparty na Ubuntu.
Zostało to wprowadzone w systemie Windows 10 wraz z aktualizacją rocznicową (2016) i nie jest domyślnie włączone. Aby włączyć nową funkcję w maszynie Windows 10 Anniversary Update, wykonaj następujące czynności:
Trochę historii, w 2015 roku w ramach projektu Astoria rozpoczęto wprowadzanie aplikacji dla systemu Windows do systemu Windows. W tym celu zbudowano podsystem Linux o nazwie Windows Subsystem for Linux (WSL). Ostatecznie projekt Astoria został porzucony, ponieważ podważył ich strategię UWP (Universal Windows Platform), ale niektóre części zostały zachowane i stanowią podstawę bash dla Windows. W trakcie kursu Microsoft współpracował z Canonical (twórcami Ubuntu Linux), aby zapewnić im natywny obraz ze wszystkimi obsługiwanymi narzędziami / plikami binarnymi.
Więcej informacji dostępnych tutaj,
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/
https://blogs.windows.com / buildingapps / 2016/03/30 / run-bash-on-ubuntu-on-windows /
https://sec.ch9.ms/sessions/build/2016/P488.mp4 (wideo)
źródło
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"
I zainstalować dowolne z następujących programów ze sklepu Windows: Ubuntu, Debian, OpenSUSE, Kali LinuxOto lista opcji dostępnych od 2018-05 z kilkoma aktualizacjami dotyczącymi WSL w okresie 2019-01 wraz z odrobiną szczegółów dotyczących każdej z nich.
Opcje, które się wyróżniają
Cygwin i Babun
Cygwin zapewnia:
Cygwin chce ułatwić przenoszenie aplikacji Linux na Windows. Jeśli jakiś program C został zaprojektowany dla Uniksa i spodziewa się korzystać z takich funkcji, jak potoki, dostęp do plików i katalogów w stylu Unix itp., Możesz go skompilować dla Cygwin, a Cygwin będzie działał jako warstwa kompatybilności między kodem a obcym systemem operacyjnym (Windows) . Pozwala to temu samemu programowi C działać zarówno w systemie Linux, jak i Windows, z niewielkimi modyfikacjami lub bez modyfikacji. W ten sposób spełniono ogromną listę programów dla systemu Linux i można je uruchomić po zainstalowaniu Cygwin. Jednak Ty, użytkownik tych programów, prawdopodobnie będziesz musiał zapoznać się z Uniksem. Na przykład może być konieczne przekazanie argumentów typu „
/cygdrive/c/autoexec.bat
zamiast”c:\autoexec.bat
i gotowość do radzenia sobie z danymi wyjściowymi za pomocą zakończenia linii\n
w systemie Unix ( ) zamiast zakończenia linii w systemie Windows (\r\n
).Zbiór wszystkich programów Cygwin składa się z repozytorium i chociaż Cygwin nie ma tradycyjnego menedżera pakietów Linuksa, możesz dodawać, usuwać i aktualizować programy z tego repozytorium w dowolnym momencie w bardzo sprzeczny z intuicją sposób (uruchamiasz Cygwin's setup.exe w w dowolnym momencie po zakończeniu instalacji)
Babun to Cygwin z w pełni funkcjonalnym menedżerem pakietów (pakt), oh-my-zsh za jego powłokę, git, automatyczne aktualizacje i architekturę zorientowaną na wtyczki. Chociaż domyślną powłoką jest zsh, możesz łatwo przełączyć się na bash. Wydaje się to być miłym ulepszeniem waniliowego Cygwina, jeśli nie przeszkadza ci dodatkowa waga.
Mingw-w64
Mingw-w64 zapewnia:
MinGW to przede wszystkim dystrybucja oprogramowania i platforma do budowania systemu Windows. W szczególności jest to port systemu Windows narzędzi kompilatora GNU, takich jak GCC, make, bash i tak dalej. Zawiera sporo narzędzi GNU i minimalną warstwę kompatybilności z Uniksem.
Główna różnica między Mingw-w64 a Cygwin dotyczy priorytetów: Cygwin dąży do zapewnienia kompletnej warstwy zgodności z POSIX, obejmującej pełną implementację wszystkich głównych wywołań systemowych i bibliotek Uniksa; wydajność ma drugorzędne znaczenie dla zgodności. MinGW dąży do wydajności, więc nie zapewni niektórych interfejsów API POSIX, których nie można łatwo i / lub wystarczająco szybko zaimplementować w systemie Windows. Głównym celem MinGW są również programiści S / W. Niemniej jednak zwykli użytkownicy mogą również cieszyć się jego powłoką, a ogólny cel obejmuje narzędzia.
MSYS2 i Git dla Windows
MSYS2 zapewnia:
MSYS2 jest także przede wszystkim dystrybucją oprogramowania i platformą do budowania systemu Windows, taką jak MinGW, ale łączy zarówno sposób Cygwin, jak i MinGW. Możesz użyć MSYS2 do utworzenia „programów MinGW” lub „programów MSYS2” . Późniejsze łącze do warstwy zgodności MSYS2 (msys-2.dll), która sama ściśle śledzi rozwój warstwy zgodności Cygwin z kilkoma dodatkami / modyfikacjami . Repozytoria dwóch projektów są jednak całkowicie niezwiązane. A więc zarówno MSYS2, jak i Cygwin zapewniają,
grep.exe
że mogą mieć zupełnie inną wersję.Git dla Windows to albo MSYS2 z zainstalowanym gitem, albo przynajmniej w dużej mierze oparty na MSYS2 . Zapewnia tę samą powłokę (bash), terminal (Mintty) i menedżera pakietów (pacman). Wydaje się, że jest to najpopularniejszy sposób na uruchomienie dominującego Gita w systemie Windows, a wraz z nim otrzymujesz ładne środowisko uniksowe.
Podsystem Windows dla systemu Linux (WSL)
WSL rozwiązuje ten sam problem przy użyciu zupełnie innej metody. Uruchamiasz dokładnie ten sam kod, który uruchamiałbyś w systemie Linux na WSL, który przechwytuje wywołania jądra i tłumaczy je na wywołania jądra systemu Windows (jest to przeciwieństwo Wine). Oczywiście tłumaczenie nie może być idealne, ale Microsoft porzucił ostrzeżenie o wersji beta . Ponieważ WSL nie był dostępny w systemie Windows Server przed 2018 r., Nie analizowałem go zbyt często. W każdym razie dostajesz ładną powłokę bash z większością gadżetów CLI, których spodziewałbyś się znaleźć w standardowej instalacji Ubuntu. Microsoft oficjalnie stwierdza, że „WSL nie ma na celu obsługi komputerów stacjonarnych ani aplikacji z graficznym interfejsem użytkownika”istnieją jednak nieoficjalne instrukcje, jak to zrobić. Wydaje się, że w chwili obecnej (początek 2018 r.) Główne wady WSL są następujące: a) renderowanie ekranu i dostępu do dysku jest bardzo wolne b) nie należy edytować plików WSL (Linux) z systemu Windows c) działa tylko na 64-bitowym systemie Windows. Oto stare, ale miłe porównanie z cygwinem (zauważ, że Rich Turner jest członkiem zespołu WSL i opublikował wiele przydatnych informacji dotyczących WSL)
Wspólna płaszczyzna
Poza WSL większość powyższych narzędzi ma wiele wspólnych technologii (biblioteki, pliki wykonywalne, koncepcje). Na przykład powłoka bash dostarczana z MinGW zależy od msys-2.dll, który sam jest rozwidleniem cygwin.dll. Więc tak, jest dużo miejsca na zamieszanie :-)
Więcej opcji
Cmder zapewnia po prostu ładny terminal i powłokę przypominającą bash dla Windows. Jego głównym składnikiem jest Conemu (terminal). Ponadtododaje Clink, który zapewniapotężną edycję wiersza poleceń w stylu Bash , niestandardowy układ monitu i schemat kolorów Monokai. Jest wysoce (a może w pełni) kompatybilny z rodzimymi programami konsoli Windows.
Scoop zapewnia menedżera pakietów wiersza poleceń dla wielu dobrze znanych programów wieloplatformowych, w tym wielu narzędzi GNU. Pobiera wstępnie skompilowane pakiety. Nie zapewnia ani powłoki, ani terminala, ale działa pod Windows cmd.exe (ze wszystkimi swoimi ograniczeniami, ale także z pełną kompatybilnością z rodzimymi programami konsoli Windows). Nie zawiera również pakietu kompilatorów (ale oczywiście kompilatory i narzędzia programistyczne to typowe pakiety, które można zainstalować za pomocą scoop). Wiele programów instalowanych przez Scoop pochodzi bezpośrednio z projektu MinGW / MSYS lub zostało zbudowanych przy użyciu ich narzędzi.
Jeszcze więcej opcji
Rozwiązania poniżej nie wydają się aktywne i nigdy ich nie testowałem, ale wydają się wykonywać pracę dla innych:
Gow (Gnu On Windows) to lekka alternatywa dla Cygwina bez powłoki. Korzysta z wygodnego instalatora Windows, który instaluje około 130 niezwykle użytecznych aplikacji Linux typu open source skompilowanych jako natywne pliki binarne win32 i dostępnych za pośrednictwem cmd.exe systemu Windows. Ma być jak najmniejszy (około 10 MB).
UnxUtils & GnuWin32 : UnxUtils to zbiór portów wspólnych GNU uniksowych narzędzi do rodzimej Win32 z wykonywalne w zależności tylko od C-wykonawczego msvcrt.dll Microsoft. Musisz pobrać główną część i kilka aktualizacji . GnuWin32 ma nowsze wersje niż UnxUtils, ale wymaga plików obsługujących (np. DLL)
MSYS & MinGW wydają się mieć został zastąpiony przez MSYS2 & MinGW-W64 więc nigdy nie spojrzał na nich.
Niektóre typowe problemy dotyczące Cygwin i MSYS2
Odnośnie terminalu
Mintty jest terminalem używanym w Cygwin, MSYS2 i ich pochodnych. Należy pamiętać, że jeśli używasz rodzimych programów konsolowych systemu Windows, nie jest to bezbolesne zastąpienie wiersza polecenia systemu Windows. Podczas gdy programy z prostym wyjściem tekstu zwykle działają dobrze, programy interaktywne i pełnoekranowe często mają problemy. Przeczytaj więcej na stronie głównej Mintty, a także przeczytaj wpis „Niektóre natywne programy konsolowe nie działają po uruchomieniu z Git Bash” w Git na Windows FAQ . Ten wpis ma następujące zalecenia, gdy napotkasz tego rodzaju problemy:
Inne sprawy
Dwie najważniejsze rzeczy, o których należy pamiętać, to:
istnieje wymiana pomiędzy mocą a problemami trudnymi do debugowania. Im potężniejsze rozwiązanie, tym więcej rzeczy może pójść nie tak, nawet w sposób, który początkowo będzie wydawał się niezwiązany z warstwą Linuksa.
jeśli nie masz dużego doświadczenia z Linuksem, nie korzystaj z bardziej zaawansowanych rozwiązań, takich jak Cygwin / MSYS2 / MinGW
UnxUtils i GnuWin32 mają najmniejszą moc, ale także najmniejszy potencjał powodowania bólów głowy. Cygwin i podobne przebiją poprzeczkę zarówno pod względem siły, jak i bólów głowy. Cmder jest gdzieś pośrodku. Kiedy potrzebujesz najbardziej wydajnych rozwiązań, śpij spokojnie i bądź w pełni skoncentrowany. Unikaj używania zaawansowanych rozwiązań podczas testowania czegoś nowego i być może niestabilnego. Nie zapominaj również, że rozwiązania o średniej złożoności, takie jak cmder, nie są bez skazy.
Kwestia poleceń Linux-owych wyświetlających polecenia systemu Windows jest częstą przyczyną trudnych do debugowania problemów w rozwiązaniach takich jak Cygwin / MSYS2 / MinGW. Oto przykład: miałem plik .bat, który używał polecenia timeout. Uruchomienie pod Cygwin nie powiedzie się, ponieważ limit czasu jest również poleceniem Linuksa, ale z inną składnią. Po zauważeniu problemu dowiedziałem się, że mogę dodać PATH = ... na górze pliku .bat, aby upewnić się, że polecenie systemu Windows ma priorytet. Ale wtedy dostałem jeszcze bardziej tajemniczy błąd „Przekierowanie wejścia nie jest obsługiwane” i zdecydowałem się na obejście tego problemu przed znalezieniem przyczyny.
Oto przykład problemu z cmder. Uruchomiłem wersję unisona dla Windows pod Cmder i pod pewnymi specjalnymi warunkami wisiał bez żadnego komunikatu o błędzie . To samo polecenie zawsze działało idealnie pod cmd.exe. Zabawne jest to, że działał on również idealnie pod Cygwin (w rzeczywistości, jeśli masz nazwy plików Unicode, terminal Cygwin jest lepszy niż cmd.exe, ponieważ cmd.exe często wyświetla zniekształcony tekst Unicode).
O tym przewodniku
W latach 2017-05 miałem dość niezrozumienia różnic między powyższymi narzędziami, chociaż używałem niektórych z nich od dawna (głównie CygWin i cmder, ale nigdy do celów programistycznych). Poświęciłem więc kilka godzin na przemycenie krajobrazu. Ten przewodnik jest wynikiem notatek, które zachowałem. Nie jestem ekspertem w tej dziedzinie, ale starałem się znaleźć wszystkie istotne informacje, przeczytać je krytycznym okiem i wyraźnie przedstawić najważniejsze części. Proszę o komentarz, jeśli coś wydaje się nie tak, a ja postaram się to naprawić.
Na koniec przeprosiny za niektóre problemy terminologiczne: w tym tekście czasami używam terminu Linux zamiast UNIX lub POSIX. Wiem, że nie są takie same, ale bardzo trudno jest je rozróżnić, podchodząc do tematu z tak dużej odległości. Nawet jeśli nie jest to trudne, zajmuje mi to czasu, którego nie mam ;-)
źródło
pacman
nie jestpackman
Sugeruję pobranie i zainstalowanie minimalnego zestawu MinGW, a także minimalnego zestawu MSYS. Instalator MinGW zapewnia łatwy GUI do wyboru pakietów, które chcesz zainstalować. Jeśli wszystko czego potrzebujesz to BASH, instalacja nie zajmie więcej niż kilka megabajtów.
AKTUALIZACJA: Przeprowadziłem się do MSYS2, który jest znacznie bardziej zaawansowany i ma port narzędzia Pacman ArchLinux do zarządzania pakietami. Instalator MSYS2 ma wszystko, czego potrzebujesz, a także używa mięty, co jest absolutnie idealne.
źródło
Istnieje również Clink dostępny na GitHub . Integruje się z wierszem poleceń systemu Windows za pomocą bibliotek haków.
Z opisu projektu:
(więc nie zapewnia funkcji bash-as-a-language-language ani innych dodatków uniksowych)
Używam Linuksa w pracy i czasami tabuluję się w cmd, co nie działa tak, jakbym tego oczekiwał po Bash. Dzięki Clink mogę pokonać niektóre z tych niedociągnięć.
Ostatnio odkryłem również obiecujący, ale jeszcze nieulegalny projekt o nazwie flinux, który emuluje funkcje systemu Linux i zapewnia na nim jakiś system (obecnie oparty na Arch Linux)
źródło
cmd.exe
, tak jak opisano na stronie;)Oprócz tego, co powiedział faffaffaff , Git dla Windows zawiera Bash i niektóre popularne programy wiersza poleceń Linuksa (np. Vim , sed i gawk ). Opiera się na MSYS . Wersja programów jest jednak stara, na przykład Bash to wersja 3.1. Cygwin miałby nowsze wersje narzędzi.
Używam również ConEmu jako emulatora terminala (głównie do podświetlania składni w Vimie, stron tabulatorów i łatwiejszego wklejania kopii). console2 to także kolejny popularny emulator terminala, chociaż go nie próbowałem.
źródło
To jedna z pierwszych rzeczy, które robię, gdy konfiguruję nowy komputer z systemem Windows:
Funkcjonalna i elegancka konsola w systemie Windows
źródło
Właśnie próbowałem z Babunem , który zintegrował wewnętrznie Cygwin i smakuje mi dobrze:)
Plik do pobrania nieco duży, około 250 MB. Ale instalacja jest prosta; nie trzeba niczego konfigurować i to po prostu działa!
źródło