Является ли PowerShell готовым заменить мою оболочку Cygwin на Windows?

Я обсуждаю, следует ли изучать PowerShell или просто придерживаться Cygwin/скрипты Perl/Unix shell и т.д.

Преимущество PowerShell заключается в том, что скрипты могут быть более легко использованы товарищами по команде, у которых нет Cygwin; однако, я не знаю, действительно ли я буду писать много сценариев общего назначения, или если бы люди даже использовали их.

Unix-скрипты настолько мощные, что PowerShell подходит достаточно близко, чтобы гарантировать переключение?

Вот некоторые из конкретных вещей (или эквивалентов), которые я бы искал в PowerShell:

  • grep
  • рода
  • уник
  • Perl (как близко PowerShell приходит к возможностям Perl?)
  • AWK
  • sed
  • файл (команда, предоставляющая информацию о файле)
  • и др.

Ответ 1

Инструменты - это просто инструменты.
Они помогают или нет.
Вам нужна помощь или нет.

Если вы знаете, что Unix и эти инструменты делают то, что вам нужно, чтобы они делали в Windows, - тогда вы счастливый парень, и вам не нужно изучать PowerShell (если вы не хотите изучать).

Мое первоначальное намерение состояло в том, чтобы включить набор инструментов Unix в Windows и покончить с этим (многие из нас в команде имеют глубокие знания Unix и здоровую дозу уважения к этому сообществу.)

Я обнаружил, что это не очень помогает. Причина этого в том, что AWK/grep/sed не работают с COM, WMI, ADSI, реестром, хранилищем сертификатов и т.д., и т.д.

Другими словами, UNIX - это целая экосистема, настроенная вокруг текстовых файлов. Таким образом, инструменты обработки текста являются эффективными инструментами управления. Windows - это совершенно другая экосистема, настроенная вокруг API и объектов. Вот почему мы изобрели PowerShell.

Я думаю, вы обнаружите, что будет много случаев, когда обработка текста не даст вам того, чего вы хотите в Windows. В этот момент вам захочется подобрать PowerShell. ПРИМЕЧАНИЕ - это не все или ничего. В PowerShell вы можете обращаться к своим инструментам Unix (и использовать их текстовую обработку или обработку текста PowerShell). Также вы можете вызывать PowerShell из ваших инструментов Unix и получать текст.

Опять же - здесь нет религии - наша цель - дать вам инструменты, необходимые для достижения успеха. Вот почему мы так увлечены обратной связью. Сообщите нам, где у нас нет работы, или где у вас нет необходимого инструмента, и мы внесем его в список и доберемся до него.

Честно говоря, мы выкапываем себя из 30-летней ямы, так что это займет некоторое время. Тем не менее, если вы выберете бета-версию Windows Server 2008/R2 и/или бета-версии наших серверных продуктов, я думаю, вы будете шокированы тем, как быстро эта дыра заполняется.

Что касается использования - у нас было> 3,5 миллиона загрузок на сегодняшний день. Сюда не входят люди, использующие его в Windows Server 2008, поскольку он включен в качестве дополнительного компонента и не требует загрузки.

V2 будет поставляться во всех версиях Windows. Он будет включен по умолчанию для всех выпусков, кроме ядра сервера, где он является необязательным компонентом. Вскоре после выхода Windows 7/Windows Server 2008 R2 мы сделаем V2 доступным на всех платформах, Windows XP и выше. Другими словами - ваши инвестиции в обучение будут применяться к очень большому количеству машин/сред.

Последний комментарий Если/когда вы начнете изучать PowerShell, я думаю, вы будете очень счастливы. На дизайн в значительной степени влияют наши фоны Unix, поэтому, хотя мы сильно отличаемся от других, вы очень быстро его поймете (после того, как переспросите, что это не Unix :-)).

Мы знаем, что у людей очень ограниченный бюджет на обучение - вот почему мы очень ценим последовательность. Вы будете чему-то учиться, а потом будете использовать это снова и снова.

Эксперимент! Наслаждайтесь! Engage!

Ответ 2

  Grep

Командлет Select-String и оператор -match работают с регулярными выражениями. Также вы можете напрямую использовать поддержку регулярных выражений .NET для более продвинутых функций.

сортировать

Sort-Object более мощный (чем я помню * nix sort). Разрешение многоуровневой сортировки по произвольным выражениям. Здесь помогает поддержка PowerShell базового типа; например свойство DateTime будет отсортировано как DateTime без необходимости форматирования в сортируемый формат.

уник

Select-Object -Unique

Perl (насколько близко PowerShell подходит к возможностям Perl?)

С точки зрения Perl широты библиотек поддержки конкретных доменов: нигде не близко (пока).

Для общего программирования PowerShell, безусловно, более согласован и последовательн, и его легче расширять. Единственный пробел в обработке текста - это что-то эквивалентное оператору Perl ...

AWK

Это было достаточно долго с момента использования AWK (должно быть> 18 лет, так как позже я просто использовал Perl), поэтому не могу комментировать.

СЕПГ

[См. выше]

файл (команда, которая дает информацию о файле)

Сила PowerShell здесь не столько в том, что он может делать с объектами файловой системы (и здесь он получает полную информацию, dir возвращает объекты FileInfo или FolderInfo в зависимости от ситуации), так это в целом модель провайдера.

Реестр, хранилище сертификатов, SQL Server, RSS-кеш Internet Explorer и т.д. Можно рассматривать как пространство объектов, которое можно перемещать с помощью тех же командлетов, что и файловая система.


PowerShell - это, безусловно, путь вперед в Windows. Microsoft сделала это частью своих требований к будущим не домашним продуктам. Отсюда богатая поддержка в Exchange, поддержка в SQL Server. Это будет только расширяться.

Недавний пример этого - TFS PowerToys. Многие операции клиента TFS выполняются без необходимости каждый раз запускать tf.exe (для чего требуется новое подключение к серверу TFS и т.д.), Что значительно облегчает дальнейшую обработку данных. Помимо предоставления широкого доступа ко всему клиентскому API TFS с большей детализацией, чем в любом из Team Explorer файла TF.exe.

Ответ 3

Как человек, чья карьера была сосредоточена на разработке корпоративных приложений Windows с 1997 по 2010 год, очевидным ответом будет PowerShell по всем уважительным причинам, указанным ранее (например, это часть корпоративной стратегии Microsoft; она хорошо интегрируется с Windows/COM/.NET; и использование объектов вместо файлов обеспечивает "более богатую" модель кодирования). По этой причине я использовал и продвигал PowerShell последние два года или около того, с явным убеждением, что я следовал "Слову Билла".

Однако, как прагматик, я больше не уверен, что PowerShell - отличный ответ. Несмотря на то, что это отличный инструмент для Windows, он обеспечивает столь необходимый шаг к заполнению исторической дыры, которой является командная строка Window, поскольку мы все наблюдаем за тем, как Microsoft контролирует потребительские ошибки в компьютерах, все более вероятно, что у Microsoft впереди огромная борьба за сохранение своей ОС как важно для предприятия будущего.

Действительно, учитывая, что моя работа все чаще находится в разнородных средах, я считаю, что сейчас гораздо удобнее использовать сценарии Bash, поскольку они работают не только в Linux, Solaris и Mac OS X, но и в сочетании с помощь Cygwin - в Windows.

Поэтому, если вы поверите в то, что будущее ОС скорее коммерциализировано, а не монополизировано, то, по-видимому, имеет смысл выбрать стратегию гибких инструментов разработки, которая по возможности не позволяет использовать проприетарные инструменты. Однако, если вы видите, что в вашем будущем доминирует все, что есть - Редмонд, тогда переходите на PowerShell.

Ответ 4

Я использовал немного PowerShell для автоматизации script. Хотя очень приятно, что среда, по-видимому, была продумана гораздо больше, чем оболочки Unix, на практике использование объектов вместо текстовых потоков гораздо более неуклюжие, и многие объекты Unix, которые были разработаны за последние 30 лет по-прежнему отсутствуют.

Cygwin по-прежнему является моей средой сценариев выбора для хостов Windows. Это, безусловно, превосходит альтернативы с точки зрения достижения цели.

Ответ 5

Здесь есть много отличных ответов, и вот мое мнение. PowerShell готов, если вы... Примеры:

grep = "Строка выбора -Pattern"

sort = "Sort-Object"

uniq = "Get-Unique"

file = "Get-Item"

cat = "Get-Content"

Perl/AWK/Sed - это не команды, а утилиты, поэтому их трудно сравнивать, но в PowerShell можно делать практически все.

Ответ 6

Я только недавно начал заниматься PowerShell с любой серьезностью. Хотя в течение последних семи лет я работал почти исключительно в среде Windows, я прихожу из среды Unix и постоянно пытаюсь "поработать над Unix" своим опытом взаимодействия с Windows. Это расстраивает, если не сказать больше.

Справедливо сравнивать PowerShell с чем-то вроде Bash, tcsh или zsh, поскольку такие утилиты, как grep, sed, awk, find и т.д., Строго говоря, не являются частью оболочки; однако они всегда будут частью любой среды Unix. Тем не менее, команда PowerShell, такая как Select-String, очень похожа на grep и связана как основной модуль в PowerShell... поэтому линии могут быть немного размытыми.

Я думаю, что ключевым моментом является культура и тот факт, что соответствующие наборы инструментов будут воплощать их соответствующие культуры:

  • Unix - это основанная на файлах (в общем случае, не Unicode) текстовая культура. Файлы конфигурации - это почти исключительно текстовые файлы. Windows, с другой стороны, всегда была гораздо более структурированной в отношении форматов конфигурации - конфигурации обычно хранятся в проприетарных базах данных (например, реестре Windows), для которых требуются специализированные инструменты для их управления.
  • Интерфейс администрирования Unix (и, в течение многих лет, разработки) традиционно был командной строкой и виртуальным терминалом. Windows начиналась как графический интерфейс, а административные функции только недавно начали отходить от использования исключительно графического интерфейса. Мы можем ожидать, что опыт работы с Unix в командной строке будет более богатым, более зрелым, учитывая его значительную выгоду в PowerShell, и мой опыт соответствует этому. Об этом, по моему опыту:

    • Административный опыт Unix направлен на то, чтобы упростить процесс за минимальное количество нажатий клавиш; Вероятно, это связано с исторической ситуацией, когда пришлось администрировать сервер по медленному коммутируемому соединению со скоростью 9600 бод. Теперь в PowerShell есть псевдонимы, которые способствуют обходу довольно многословного стандарта Verb-Noun, но знакомство с этими псевдонимами немного затруднительно (каждый знает что-то лучше, чем: alias | where {$_.ResolvedCommandName -eq "<command>"}?).

      Пример богатого способа манипулирования историей:

      Команды iptables часто бывают многословными, и повторять их с небольшими различиями было бы болезненно, если бы не одна из многих полезных функций манипулирования историей, встроенных в Bash, поэтому вставьте правило iptables, например следующее:

      iptables -I camera-1-internet -s 192.168.0.50 -m state --state NEW -j ACCEPT

      второй раз для другой камеры ("camera-2"), это просто случай выдачи:

      !!:s/-1-/-2-/:s/50/51

      что означает "выполнить предыдущую команду, но заменить -1- на -2- и 50 на 51.

    • Опыт Unix оптимизирован для сенсорных машинисток; можно сделать все, не выходя из "домашнего" положения. Например, в Bash с использованием привязок клавиш Emacs (да, Bash также поддерживает привязки vi), циклический просмотр истории выполняется с помощью Ctrl-P и Ctrl-N при переходе к началу и концу строки выполняется с использованием Ctrl-A и Ctrl-E соответственно... и это определенно не заканчивается. Попробуйте даже самую простую навигацию в консоли PowerShell, не переходя из исходного положения, и у вас возникнут проблемы.

    • Простые вещи, такие как универсальная подкачка страниц (а меньше) в Unix, не кажутся доступными из коробки в PowerShell, что немного расстраивает, и богатого опыта редактора также не существует. Конечно, всегда можно скачать сторонние инструменты, которые восполнят эти пробелы, но было бы неплохо, если бы эти вещи были просто "там", как будто они практически в любой разновидности Unix.
  • Культура Windows, по крайней мере, с точки зрения системного API, в значительной степени определяется вспомогательными средами, а именно, COM и .NET, обе из которых являются высоко структурированными и основанными на объектах., С другой стороны, доступ к API Unix традиционно осуществлялся через файловый интерфейс (/dev и /proc) или (не объектно-ориентированные) вызовы библиотеки в стиле C. Неудивительно, что сценарии соответствуют их парадигмам ОС. PowerShell по своей природе структурирован (все является объектом) и основан на файле Bash -and-friends. Структурированный API, который имеется в распоряжении программиста PowerShell, огромен (по существу, соответствует обширному существующему набору стандартных интерфейсов COM и .NET).

Короче говоря, хотя возможности сценариев PowerShell, возможно, более мощные, чем Bash (особенно если учесть доступность .NET BCL), интерактивный интерфейс значительно слабее, особенно если вы идете к этому с точки зрения полностью управляемой клавиатурой консоли (как и многие Unix-головки).

Ответ 7

Я ни в коем случае не очень опытный пользователь PowerShell, но мало того, что мне показалось, произвело на меня большое впечатление. Вы можете связать вместе встроенные командлеты, чтобы делать практически все, что вы могли бы делать в приглашении Unix, и есть некоторые дополнительные преимущества для таких вещей, как экспорт в CSV, таблицы HTML и для более глубоких типов задач системного администрирования..

И если вам действительно нужно что-то вроде sed, всегда есть UnixUtils или GnuWin32, которые можно довольно легко интегрировать с PowerShell.

Как давний пользователь Unix, у меня, однако, были некоторые проблемы с привыканием к схеме именования команд, и я, безусловно, получил бы больше пользы от нее, если бы знал больше .NET.

Поэтому, по сути, я говорю, что стоит изучить его, если только его наличие в Windows не представляет проблемы.

Ответ 9

Когда вы сравниваете PowerShell с комбинацией Cygwin/Perl/Shell, имейте в виду, что PowerShell представляет только часть "Shell" этой комбинации.

Однако вы можете вызвать любую команду из PowerShell так же, как вы делаете это из cmd.exe или Cygwin. Он не реализует указанные функции и, конечно, не сопоставим с Perl.

Это "просто" оболочка, но она облегчает программирование, предоставляя удобный интерфейс для .NET-вселенной.

Также помните, что для PowerShell требуется Windows XP, Windows Server 2003 или выше, что может вызвать проблемы в зависимости от вашей ИТ-инфраструктуры.

Обновление:

Я понятия не имел, какие философские дебаты вызовет мой ответ.

Я опубликовал свой ответ в контексте вопроса: сравните PowerShell с Cygwin, Perl и Bash.

PowerShell - это оболочка, так как она не имеет синтаксической разницы между встроенными командами, командлетами, пользовательскими функциями и внешними командами (.exe,.bat,.cmd). Различаются только вызывающие методы .NET, добавляя пространство имен или объект в вызове.

Его программируемость проистекает из .NET Framework, а не из чего-то определенного для "языка" PowerShell.

Я бы сказал, что считаю PowerShell "языком сценариев", как только Bugzilla или MediaWiki будут реализованы в виде сценариев PowerShell, работающих на веб-сервере;)

До тех пор наслаждайтесь сравнениями.

Ответ 10

Поскольку мои недавние эксперименты привели меня к глубине вызовов PowerShell и .NET, я должен сказать, что PowerShell может заменить оболочку Cygwin и Unix.

Я не уверен насчет Perl, но так как PowerShell и Perl являются Turing завершенными как языки программирования, я даю это как замену Perl тоже.

Одна вещь, которую PowerShell имеет над Cygwin и обычным Bash под * nix, - это ее способность выполнять изолированные вызовы DLL, манипулировать операционной системой через прямые вызовы API, методы WMI и даже COM-объекты. Как насчет запуска Internet Explorer через код, а затем делать все, что вы хотите с отображаемым документом, эффективно эмулируя серверную часть для веб-сервера?

Как насчет сбора данных с серверов SQL и других поставщиков данных, их анализа и экспорта в формате CSV, почтовых сообщений, текста и фактически любых существующих и несуществующих форматов файлов? (Конечно, при наличии соответствующих навыков создания действительного файла из полученных данных, но CSV легко доступны).

И есть дополнительная безопасность, доступная через подписанные командлеты и сценарии, групповые политики и политики выполнения, которые помогают предотвратить запуск вредоносного кода в вашей системе, даже если вы запускаете их от имени администратора.

О том, какие команды реализованы, - в ответе Ричарда их перечисляет и возможность PowerShell эмулировать их функциональность.

О том, способен ли PowerShell гарантировать переключение - это больше вопрос личных предпочтений, хотя все больше и больше служб Windows предоставляют командлеты PowerShell для управления ими, а не использование PowerShell с этими службами считается помехой. (Сервер Hyper-V является основной такой службой, и он также дает возможность делать больше с помощью командлетов PowerShell, чем с графическим интерфейсом!)

Вероятно, этот ответ опоздал на пять лет, но, тем не менее, если кто-то выполняет административные задачи или общие сценарии различных вещей в Windows, он должен обязательно использовать PowerShell для своих целей.

Ответ 11

Командлеты в PowerShell очень хороши и работают надежно. Их объектно-ориентированная привлекательность мне очень нравится, так как я являюсь разработчиком на Java/С#, но это совсем не полный набор. Так как объектно-ориентированный, он упустил большую часть текстового потока зрелости набора инструментов POSIX (awk и sed и многие другие).

Лучший ответ, который я нашел на дилемму: любить ОО-технологии и любить зрелость инструментов POSIX - это использовать оба! Одним из важных аспектов PowerShell является то, что он отлично справляется с передачей объектов в стандартные потоки. PowerShell по умолчанию использует объектный конвейер для перемещения своих объектов. Это не стандартные потоки (стандартный выход, стандартная ошибка и стандартный вход). Когда PowerShell необходимо передать вывод стандартному процессу, у которого нет конвейера объектов, он сначала преобразует объекты в текстовый поток. Поскольку PowerShell хорошо справляется с этим, он является отличным местом для размещения инструментов POSIX!

Лучший набор инструментов POSIX - GnuWin32. Установка занимает более 5 секунд, но это того стоит, и, насколько я могу судить, она не изменяет вашу систему (реестр, папки c:\windows\* и т.д.), За исключением копирования файлов в указанные вами каталоги. Это очень приятно, потому что, если вы поместите инструменты в общий каталог, многие люди смогут получить к ним доступ одновременно.

Инструкция по установке GnuWin32

Загрузите и запустите exe (с сайта SourceForge), указав в подходящем каталоге (я буду использовать C:\bin). Там будет создан каталог GetGnuWin32, в котором вы будете запускать download.bat, затем install.bat (без параметров), после чего будет каталог C:\bin\GetGnuWin32\gnuwin32\bin, который является самой полезной папкой, которая когда-либо существовала в Windows машина. Добавьте этот каталог к своему пути, и вы готовы к работе.

Ответ 12

TL; DR - я не ненавижу Windows или PowerShell. Я просто не могу ничего сделать в Windows или PowerShell.


Лично я все еще нахожу PowerShell в лучшем случае не в восторге.

  • Завершение пути к каталогам на вкладке не является составной частью, требуя от пользователя вводить разделитель пути после каждого завершения имени.
  • Я до сих пор чувствую, что в Windows даже нет понятия пути или того, что это за путь, и нет доступного индикатора домашнего пользователя ~/, за исключением некоторого @environment://somejibberish/%user_home%
  • NTFS все еще в беспорядке и, похоже, всегда будет. Удачи в навигации.

  • Интерфейс cmd-esque. Файл cmd.exe динозавра все еще отображается в PowerShell, Изменить & rarr; Пометка по-прежнему остается единственным способом копирования информации, причем копирование осуществляется только в виде прямоangularьных блоков видимого терминального пространства. и Изменить & rarr; Марк по-прежнему единственный способ вставлять строки в терминал.

  • Окраска в синий цвет не делает его более привлекательным. Я не против того, чтобы разработчики Microsoft имели вкус цвета.

  • Окна всегда открываются в левом верхнем углу экрана. Для тех, кто использует вертикальные панели задач, это невероятно раздражает, особенно если учесть, что панель задач Windows будет покрывать единственный angular окна, который дает доступ к функциям копирования/вставки.

Я не могу много говорить о средствах, которые включает в себя Windows. Поскольку существует целый набор свободно распространяемых инструментов CLI с открытым исходным кодом, и PowerShell поставляется, насколько мне известно, ни один из них не вызывает большого разочарования.

  • PowerShell wget принимает, казалось бы, несопоставимые аргументы в GNU wget. Спасибо, проблеск надежды - бесполезно.
  • PowerShell POSIX не совместим с Bash, в частности, оператор && не обрабатывается, что делает простейшую условную команду, не выполняющую ничего.

Я не знаю человека; Я сделал это, я действительно сделал; Я все еще пытаюсь сделать это в надежде, что в следующий раз, когда я открою его, это будет менее бесполезно. Я ничего не могу сделать в PowerShell, и я едва могу что-то сделать с реальным проектом по переносу инструментов GNU в Windows.

MySysGit дает мне приглашение dinosaur cmd.exe с несколькими инструментами GNU, и это все еще очень не радует, но в конце концов завершение пути работает. И команда Git будет работать в Git Bash.

Mintty for MySysGit предоставляет интерфейс Cygwin через среду mysysgit, позволяя копировать и вставлять объекты (выберите для копирования (мышь), Shift + Ins для вставки, насколько современный...). Тем не менее, такие вещи, как git push не работают в Mintty.

Я не хочу ругать, но я все еще вижу огромные проблемы с удобством использования командной строки в Windows даже с такими инструментами, как Cygwin.


П.С.: То, что в PowerShell можно что-то сделать, не делает его пригодным для использования. Юзабилити глубже, чем способности, и на чем я стараюсь использовать продукт в качестве потребителя.

Ответ 13

Я не видел, чтобы PowerShell действительно взлетела, по крайней мере, пока. Так что, возможно, не стоит учить его, если другие члены вашей команды уже не знают об этом.

Возможно, вам лучше использовать язык сценариев, за которым могут стоять другие, Perl, как вы упомянули, или другие, такие как Ruby или Python.

Я думаю, что многое зависит от того, что вам нужно сделать. Лично я использую Python для своих собственных сценариев, но когда я начинаю писать что-то, что я никогда не смогу передать, я знаю, поэтому стараюсь не делать ничего слишком революционного.

Ответ 14

Почему бы не использовать оба? Вызывайте скрипты PowerShell в Cygwin, как и любые другие интерпретируемые скрипты, такие как Perl и т.д.

Я делаю это настолько, что написал https://bitbucket.org/jbianchi/powershell для оболочки Bash для вызова powershell.exe в Cygwin. Его можно использовать как шебанг в качестве первой строки сценария powershell.exe.ps1 (поскольку PowerShell также использует "#" в качестве комментария). Смотрите https://bitbucket.org/jbianchi/powershell/wiki/Home примеры

Ответ 15

В двух строках Cygwin и PowerShell - это разные инструменты, однако, если у вас установлен Cygwin, вы можете запускать исполняемые файлы Cygwin в сеансе PowerShell. Я настолько привык к PowerShell, что теперь я больше не использую grep, sort, awk и т.д. В PowerShell есть довольно много встроенных альтернатив, и если нет, то вы можете найти там командлет.

Основным инструментом, который я использую, является ssh.exe, но в рамках сеанса PowerShell.

Это прекрасно работает.

Ответ 16

Я нашел, что программирование PowerShell не стоит усилий.

У меня есть многолетний опыт работы с shell-скриптами под Unix, но мне очень трудно было что-то сделать с PowerShell.

Кажется, что многие функции требуют от вас опроса интерфейса управления Windows и выдачи SQL-подобных команд для получения необходимой вам информации.

Например, я хотел написать script, чтобы удалить все файлы с определенным суффиксом из дерева каталогов. В Unix это было бы просто...

find . -name \*.xyz -exec rm {} \;

Через пару часов обманывают Scripting.FileSystemObject и WScript.Shell и выдают "SELECT * FROM Win32_ShortcutFile WHERE Drive = '" и диск и "И путь =" и searchFolder и "", я наконец дал и запустили команду Windows Explorer Поиск и просто сделайте это вручную. Вероятно, есть способ сделать то, что я хотел, но я не видел ничего очевидного, и все примеры на сайте MSDN были настолько тривиальны, что были бесполезны.

EDIT Хех, конечно, как только я это написал, я еще несколько раз подсунул и обнаружил, что мне не хватало: опция -recurse для команды remove-item неисправна (отображается, если вы используете get-help remove-item -detailed).

Я пытался "remove-item -filter" *.xyz "-recurse", и он не работал, поэтому я отказался от него.

Оказывается, вам нужно использовать get-childitem -filter '*.xyz' -recurse | remove-item

Ответ 17

PowerShell очень мощный, более мощный, чем стандартные встроенные оболочки Unix (но только потому, что он включает в себя большую часть функциональности, обычно выделяемой подпрограммам). Также учтите, что вы можете писать апплеты на любом языке .NET, включая IronPython, IronRuby, PerlNet и т.д., Или вы можете просто вызывать свои команды Cygwin из PowerShell, игнорируя все дополнительная функциональность, и она будет работать аналогично Bash, KornShell или как угодно...

Ответ 18

Вы также можете попробовать запустить Bash-скрипты в Windows, используя BashWin по адресу https://github.com/skanga/BashWin.