Я слышал кое-что об особенностях PowerShell. Некоторые из них кажутся типичными особенностями оболочек Unix.
Похоже, что Powershell включает в себя конвейер и командлеты, похожие на скрипты оболочки. Но я еще не пробовал (без Windows), поэтому могу ошибаться.
Итак, мой вопрос: похож ли Powershell на оболочку Unix или концепция отличается?
Если последнее: в каких пунктах концепция отличается?
unix
shell
powershell
Mnementh
источник
источник
Ответы:
PowerShell внешне похож на оболочки Unix. PowerShell имеет псевдонимы для многих команд, которые вы используете в Unix, например, ls, rm, cp, mv и т. Д. Однако способ работы командлетов за псевдонимами совершенно другой.
В оболочке * nix все основано на тексте, поэтому выходные данные одной команды можно передавать по конвейеру другой, но принимающая программа должна знать, как анализировать / интерпретировать текст из конвейера. В этом главное отличие оболочек PowerShell и * nix ... в PowerShell все, что передается, является объектом.
Следствием этого является то, что передача от одной команды к другой - это не просто передача stdout в stdin. Он передает полноценный объект .net к получателю. Следовательно, получатель просто должен знать, как обрабатывать объект этого типа. Не нужно реализовывать разбор текста, но нужно понимать, как вызывать методы и свойства (члены) входного объекта.
В программе командной строки * nix вы должны написать код, который читает из stdin и анализирует информацию из текста, созданного другой программой. В PowerShell вы бы сделали что-то вроде этого:
Вызов этого кода в командной строке может выглядеть так:
Вы также можете сделать то же, что и выше, используя механизм конвейера, но вы можете увидеть главное отличие в том, что мы передаем объект, а не текст:
Забыв об этом главном различии, я бы сказал, что есть и другие поверхностные сходства, но в основном только синтаксически. Синтаксис PowerShell, похоже, был разработан с учетом пользователей оболочки * nix, поэтому многие языковые стили схожи.
источник