Windows Powershell
Вчера ночью смотрел на Windows Powershell. Красивый, мощный, удобный язык командной строки («песню о пиве» я уже написал). Очень понравился, изучается очень быстро, позволяет многое. Основная идея — конвееры, по которым ходят не строки (как в Linux/Unix), а объекты. То есть вы можете получить список процессов, отфильтровать их не как текстовые строки, а как набор объектов — по свойствам, дальше, ну, к пример, отсортировать по какому-то свойству и выгрузить в XML.
Очень хорошо называются командлеты, например, «Get-Process», правда, сразу понятно что делает эта команда. Причём, у команд есть алиасы, которые порадуют любителей Unix: можно написать «Get-Help Get-Process» или «man ps». Где «man» — алиас для «Get-Help», «ps» — алиас для «Get-Process».
Язык слаботипизированный, но можно и жёстко задавать тип (например, в параметрах функций), если хочется.
Кардинально решена проблема с безопасностью (язык мощный, сразу спровоцирует написание вирусов) — файлы этого языка (расширение — .ps1) не запускаются, а открываются в блокноте. Запуск команд возможен или из оболочки руками или довольно нетривиальными способами (простой юзер не справится).
Всё хорошо, но до последнего абзаца. Лечение насморка гильотиной прям. Нафиг нужно оно тогда, если только руками запускается? Это ж никакой автоматизации, получается.
Комментарий для cpt-alatriste.ya.ru:
Сказано же что автоматический способ запуска есть, но он нетривиален.
Особый шик языка в том, что это, фактически, надстройка над .NET. То есть, например, скачав MySQL Connector/NET в виде библиотеки для .NET, можно её подключить прямо в шелл-скрипте и полноценно использовать.
Ну и стандартные пространства имён, входящие в .NET, тоже можно подключать, конечно. Формочку нарисовать? Без проблем, это всего три строки.
В том числе поэтому скрипты и нельзя запускать просто так. Но в этом лично я не вижу проблемы — запуск произвольных скриптов из самого шелла включается одной командой раз и навсегда (хоть и не рекомендуется так делать), а запуск по двойному щелчку мышью не особенно и нужен.
Так удивился, прочитав. Думал, что ты уже давно с ним знаком :)
«…у команд есть алисы…»
Только теряется же гибкость. Ведь не все же программы выдают Powershell’овские объекты.
Комментарий для aynyuh.livejournal.com:
Ну, я слышал звон, а теперь я ещё и попробовал его потрогать. Отличная вещь!
Комментарий для name-zh.livejournal.com:
Какие не выдают?
Комментарий для ninjacolumbo.ya.ru:
Поправил, спасибо, Саня!
любые не знающие о его существовании но имеющие текстовый интерфейс
Комментарий для name-zh.livejournal.com:
Текстовые строки, конечно же, тоже можно обрабатывать. Просто по конвееру будет передаваться набор объектов-строк. Но такие случаи, видится мне, крайне редки.
Комментарий для cpt-alatriste.ya.ru:
В *nix то же самое и никто не ругается почему-то.
./script.sh просто так не запутсится. Придётся либо прямо сказать sh -c ./script.sh, либо сделать ему chmod +x.