PowerShell vs. Bash: kluczowe różnice, o których warto wiedzieć
Jeśli choć trochę znasz się na emulatorach terminali na komputerach, prawdopodobnie słyszałeś o Linuksowym Bash i Microsoft PowerShell. Oba są wszechobecne w życiu profesjonalistów specjalizujących się w każdym systemie operacyjnym. Jeśli jednak nie żyjesz z dnia na dzień przed monitem powłoki, prawdopodobnie nie zastanawiałeś się zbytnio nad porównaniem tych dwóch. W takim razie nigdy nie było lepszego czasu na naukę!
Co to jest PowerShell
Microsoft wprowadził Powershell w 2006 roku, aby działał jako interfejs wiersza poleceń, który działa na wszechstronnym i potężnym frameworku skryptowym. Został zaprojektowany, aby pomóc administratorom systemu Windows w tworzeniu małych aplikacji, które wykorzystują „polecenia” (oficjalnie znane jako „polecenia cmdlet”) w celu zautomatyzowania dużej części ich pracy.
Co ważniejsze, jego struktura poleceń i „skryptowalność” stanowią kompletną przeróbkę starego MS-DOS, na którym pierwotnie zbudowano system Windows. Ma bardziej jednolitą składnię i sposób prezentowania informacji, do których łatwo się przyzwyczaić i kodować.
Nie ma to na celu zastąpienia wiersza poleceń systemu Windows, do którego większość ludzi jest przyzwyczajona, ale zamiast tego uzupełnia go własnymi funkcjami automatyzacji i konfiguracji. Na przykład, jeśli próbujesz zarządzać usługą Microsoft Azure w chmurze, możesz teraz to zrobić za pomocą polecenia Connect-AzAccount
zamiast korzystania z sesji pulpitu zdalnego.
Podobnie jak Bash, PowerShell jest w pełni audytowalny, co pozwala na użycie w bardzo wrażliwych środowiskach, w których bardzo ważna jest wiedza o wszystkim, co dzieje się w systemie.
Co to jest bash
Bash to dziadek z 1989 roku, który pozostaje aktualny w środowiskach Linuksa, niezależnie od wszystkich bardziej wyszukanych powłok , które próbowały go przyćmić. Podobnie jak PowerShell, Bash zapewnia platformę do pisania skryptów w celu znacznie łatwiejszej automatyzacji administracji.
Ponieważ jego struktura poleceń i składnia są wszechobecne w różnych dystrybucjach Linuksa, BSD , a nawet macOS, wielu programistów przyzwyczaiło się do używania Bash jako narzędzia do organizowania swoich projektów.
Chociaż Bash zawiera podstawowy zestaw operacji, które umożliwiają pisanie skryptów i przekazywanie informacji przez terminal, prawie każde polecenie wpisywane w terminalu z tą powłoką jest osobnym programem. Na przykład Bash nie zawiera poleceń ls
(lista plików) ani cat
(konkatenacja lub wyświetlanie danych wyjściowych pliku), ale zamiast tego szuka plików wykonywalnych o tej samej nazwie w określonych ścieżkach.
Powershell vs Bash: różnice
PowerShell i Bash mogą wyglądać podobnie, gdy po raz pierwszy nauczysz się ich używać, ale zasadniczo są to zupełnie różne bestie z filozofiami projektowania, które czasami kolidują. Oto kilka bardzo istotnych rzeczy, które je wyróżniają:
1. Kontrola dostępu użytkownika
Jeśli kiedykolwiek będziesz chciał zrobić coś administracyjnego z Bash, wszystko, co musisz zrobić, to poprzedzić swoje polecenie sudo . Gdy polecenie zostanie wykonane, natychmiast zostaniesz przeniesiony z powrotem do powłoki użytkownika. Wykonywanie polecenia root pozostawia mniej miejsca na błędy i zmusza cię do przeglądu tego, co robisz.
Z drugiej strony PowerShell może działać tylko w trybie administratora lub użytkownika. Jeśli chcesz przełączać się między nimi, musisz otworzyć nową sesję. Aby otworzyć PowerShell w trybie administracyjnym, kliknij prawym przyciskiem myszy ikonę programu i kliknij „Uruchom jako administrator”. Alternatywnie, w ramach jednej sesji terminala, możesz po prostu wpisać Start-Process powershell -verb runAs
, a otworzy się druga sesja z uprawnieniami administratora.
2. Wyjście
Kiedy wpisujesz polecenie w Bash, zasadniczo uruchamiasz osobny program, a ten plik wykonywalny da ci pożądany wynik. Sposób formatowania danych wyjściowych zależy od tego, jak twórca tego konkretnego programu chciał go sformatować.
Jest tu duża elastyczność, co jest świetne, ale minusem jest brak jednolitości.
Dane wyjściowe polecenia w programie PowerShell są zwykle formatowane w ramach jednego ujednoliconego standardu. Tekst widoczny na ekranie jest czytelną dla człowieka wersją danych, którą mogą interpretować inne programy.
Dzięki temu osoby piszące skrypty i aplikacje mogą po prostu korzystać z własnych funkcji i poleceń programu PowerShell, aby pobrać wszystkie potrzebne informacje.
3. Składnia
Bash używa bardzo unikalnej składni (np. if [condition]; then code here; fi
), która nie jest typowo spotykana w innych językach skryptowych. Nie jest niewiarygodnie trudny w użyciu, ale może być nieco niekonwencjonalny dla kogoś, kto dopiero zaczyna uczyć się pisania skryptów.
Jeśli chodzi o polecenia użytkownika, nie ma wyraźnej jednolitości. Każdy program ma własną składnię poleceń. Musisz wiedzieć, jak ich używać, zanim będziesz mógł zintegrować je ze swoim skryptem bash.
Składnia skryptów programu PowerShell jest podobna do każdej innej. NET (np. if (condition) {. ..code here... }
). Dla osób przyzwyczajonych do rozwoju w ramach własnego ekosystemu Microsoftu, krzywa uczenia się jest prawie żadna.
Polecenia użytkownika mają sztywną strukturę : czasownik, myślnik i rzeczownik. Na przykład Get-ChildItem
wyświetli listę wszystkich plików w bieżącym katalogu. Polecenia, które nie są specyficzne dla programu PowerShell, nadal mogą mieć strukturę podobną do Bash. Jeśli używasz go w systemie Linux, nadal będziesz mógł wykonać każde polecenie systemu Linux.
4: Elastyczność
Jeśli opanujesz Bash, będziesz wiedział, jak działać w środowiskach terminalowych niezliczonych dystrybucji Linuksa, ekosystemie BSD, a nawet macOS. To zdecydowanie król uniwersalności. Chociaż macOS przeszedł na zsh w 2019 roku, nadal ma ducha Bash.
PowerShell może działać w praktycznie każdym systemie operacyjnym, ale przede wszystkim ma działać razem z własnymi produktami Microsoftu. Jeśli go używasz, najprawdopodobniej robisz to w systemie Windows.
Jeśli wszystko, czego się nauczysz, to konwencje specyficzne dla PowerShell, zasadniczo utkniesz na wyspie z produktami Microsoftu. Chociaż tak nie musi być, nie da się ukryć, że skorupa naprawdę błyszczy tylko w takiej sytuacji. Jeśli chodzi o wady, to jest to jeden z nich, który ma ogromną część światowego udziału w rynku komputerów stacjonarnych.
Często Zadawane Pytania
Czy mogę uruchomić bash w systemie Windows i PowerShell w systemie Linux?
Aby uruchomić bash w systemie Windows, po prostu zainstaluj podsystem Windows dla systemu Linux , uruchamiając wiersz polecenia jako administrator i wpisując wsl --install
. Po zakończeniu instalacji będziesz mieć natychmiastowy dostęp do poleceń basha.
PowerShell w Linuksie jest trochę trudniejszy i zależny od dystrybucji. Firma Microsoft umieszcza na swojej stronie internetowej instrukcje dotyczące instalowania programu PowerShell w najpopularniejszych dystrybucjach. Możesz zauważyć, że na tej liście brakuje Arch Linux, ale istnieje on jako pakiet powershell
w AUR.
Czy potrzebuję Bash w systemie Windows?
Niekoniecznie, ale bardzo ci to pomoże, jeśli planujesz używać rzeczy zaprojektowanych bardziej dla Linuksa (Python, Git itp.). Posiadanie go w pobliżu nie mogło zaszkodzić. Użycie podsystemu Windows dla systemu Linux do zainstalowania Bash pozwala również na eksperymentowanie z pełną powłoką systemu Linux, co jest świetnym sposobem na zapoznanie się ze środowiskiem operacyjnym, jeśli nie jesteś zaznajomiony.
Czy polecenia Windows DOS działają w PowerShell?
Na ogół tak. PowerShell nie zastępuje oryginalnego wiersza poleceń systemu Windows. Zamiast tego jest to warstwa, która działa na niej, aby zapewnić nową funkcjonalność. Prawdopodobnie niczego nie przegapisz, jeśli po prostu użyjesz PowerShell zamiast wypróbowanego i prawdziwego cmd.exe.
Dodaj komentarz