Słyszałem kilka rzeczy o funkcjach PowerShell. Niektóre z nich wydają się typowymi cechami powłok uniksowych.
Wygląda na to, że Powershell zawiera potoki i komendy, podobnie jak skrypty powłoki. Ale jeszcze tego nie próbowałem (bez systemu Windows), więc mogę się mylić.
Moje pytanie brzmi: czy Powershell jest podobny do powłoki uniksowej, czy też koncepcja jest inna?
Jeśli to drugie: w jakich punktach koncepcja różni się?
unix
shell
powershell
Memento
źródło
źródło
Odpowiedzi:
PowerShell jest powierzchownie podobny do powłok uniksowych. PowerShell ma aliasy dla wielu poleceń, do których jesteś przyzwyczajony w Uniksie, takich jak ls, rm, cp, mv itp. Jednak sposób, w jaki działają cmdlety za aliasami, jest zupełnie inny.
W powłoce * nix wszystko opiera się na tekście, więc dane wyjściowe z jednej komendy można przesyłać do innej, ale program odbierający musi wiedzieć, jak parsować / interpretować tekst z potoku. Jest to główna różnica między powłokami PowerShell i * nix ... w PowerShell wszystko , co jest przekazywane, to obiekt.
Konsekwencją tego jest to, że przesyłanie strumieniowe z jednego polecenia do drugiego nie jest tylko przesyłaniem strumieniowym stdout do stdin. Przesyła do odbiornika pełnoprawny obiekt .net. Dlatego odbiornik musi tylko wiedzieć, jak obsługiwać obiekt tego typu. Nie musi implementować żadnego parsowania tekstu, ale musi zrozumieć, jak wywoływać metody i właściwości (członków) obiektu wejściowego.
W programie wiersza poleceń * nix pisałbyś kod, który odczytuje ze standardowego wejścia i analizuje informacje z tekstu wygenerowanego przez inny program. W PowerShell zrobiłbyś coś takiego:
Wywołanie tego kodu w wierszu poleceń może wyglądać następująco:
Możesz również zrobić to samo, co powyżej, korzystając z mechanizmu potokowania, ale widzisz tutaj główną różnicę w tym, że przekazujemy obiekt, a nie tekst:
Zapominając o tej zasadniczej różnicy, powiedziałbym, że istnieją inne powierzchowne podobieństwa, ale głównie tylko składniowe. Wygląda na to, że składnia PowerShell została zaprojektowana z myślą o użytkownikach powłoki * nix, więc wiele stylów językowych jest podobnych.
źródło