PowerShell вполне симпатичная штука. Но вот консоль как эмулятор терминала всё так же убог. И если в том же линукс — не нравится один эмулятор, используем другой, то в винде так просто не заменить. Тот же Console2 сделан через жуткие костыли. Из-за чего периодечески выдает жуткие баги. Чем убог эмулятор терминала в винде: отсутствует поддержка unicode, простым образом не меняются размеры буфера (Console2 частично решает), нет вкладок для разных процессов (в линукс идеология: программа эмулятор запускает процессы и рисует их текстовый вывод, в винде: программа, которой нужна консоль, создаёт своё окно консоли) — частично обходится Console2, но тоже криво. Далее недостаток cmd и powershell — в них нет истории, которая бы сохранялась между сеансами. Далее недостаток инфраструктуры — нет нормальных консольных инструментов. Поверьте, установка MinGW/MSYS (даже не cygwin) и Console2 намного упрожают жизнь, когда появляются bash, xargs, grep, sed, etc. Почему не сделать аналогичного в винде? Невозможно? Бред, возможно. Немного поломать совместимость в области консоли — это так страшно (с учётом, что то, что есть в чистом виде почти никто не использует)? Хотя можно попробоавть пойти любимым путём MS — старый интерфейс пусть работает как есть, но создать новый. Может прокатит.
Можно запустить PS в другом эмуляторе терминала. Как вариант есть еще очень симпатичная штучка PoshConsole poshconsole.codeplex.com/
>>The first rich, graphical, interactive console.
>>The only PowerShell console with Quake Mode!
>>Multi-line input prompt inline the way consoles should be.
>>Global hotkeys can be tied to ScriptBlocks
>>Rich XAML templates for Out-UIElement output formatting
>>Each sequence of prompt, command, output are paired into a logical unit — a RichTextBox Paragraph.
>>Triple-Click to select a whole sequence.
>>Boatloads of configurable settings are available in the $Host.PrivateData.Settings variable.
>>Autohide upon losing focus.
>>Animation on hiding.
>>Customizable colors (optionally outside the 16 console colors) for each output type, and for each console color
>>Integrated graphical Progress display…
Quake mode особенно доставляет :D
При желании можно написать свою мини-IDE с блекджеком и шлюхами, но смысла в этом я вообще не вижу :)
>>Где Юникод? 2012 год на дворе, второе десятилетие 21 века, 21 год как предложен Юникод.
Это проблема эмуляторов терминала. В ISE Юникод выводится отлично.
Когда придумывали UNIX компьютеры оперировали только с текстом и числами, который в текст и обратно легко можно было перевести. Поэтому идея что текст — уневерсальный протол связи между маленкими утилитами, которые можно собирать в цепочки под задачу, была естественна и полезна.
Но сейчас в большинстве случаев компьютеры оперируют бинарными потоками, мультимедийными данными, снабженными метаинформацией еще к тому-же.
Сегодня «консоль» должна объектный интерфейс, чтобы уметь разбирать и конвертировать между собою великое множество форматов данных средствами установленного на машине программного обеспечения.
Видео, фотки, музыка. Файлы проектов для всевозможных программ редактирования всего этого добра.
Когда дело доходит то мультимедия юниксовая консоль перестает быть такой уж удобной. Например кодирование видео с помощью ffmpeg или gstreamer. Все скрыто в одной программе черном ящике. Пользователь должен запомнить или записать последовательность нужных ключей. Не всегда можно проследить за процессо и остановить не дожидаясь конца. А вот если бы поток видео\аудио можно было гнать по консоли как текст, было бы намного удобнее и понятнее.
Не совсем понимаю, вот остановить q, есть man с помощью. Процесс кодирования показывает. Что то еще? Показывать видео в процессе кодирования? Мой нетбук кодирует 1 кадр за 2 секунды + видео будет подгружать и будет 1 кадр в 5 секунд. Думаю если плодить сложности то можно повысить подтребление.
А насчет ключей. В гуе обычно выбирается мышкой или параметры из профилей или вручную забивается битрейт и т.д. как минимум надо знать что означает каждое поле. А если вывести ВСЕ поля (например параметры x264) то интерфейс будет перегружен. В шеле же мы выбрали и все.
В консоли нужен только текст, т.к. человек может ввести информацию или камерой или голосом или с клавиатуры. Только вот голосом и с камеры требует высоконагруженной обработки. Да и все равно для взаимодействия используется язык состоящий из символов. В итоге работа Компьютер-Пользователь выходит в текст. Даже в граф. интерфейсе мы имеем тот же текст на вывод, но меньше на ввод.
Ну представте себе, что у вас есть Windows Movie Maker, у которого есть хороший стиль титров. Титры хотите наложить на склеенные между собой m2ts файлы с видеокамеры. Музыку вы хотите взять из клипа любимого артиста. И застримить по DLNA на телевизор.
Это вполне можно сделать средствами консоли на Linux. Набрать нужных утилит, гонять данные между ними сохраняя результат во временные папки. Утилитам передавать только пути и параметры. Можно написать bash скрипт который это будет делать.
Но представьте, что формат видео такой же нативный как и текст. Тогда можно просто написать чтото вроде этого
WMP.dlna.streem((«C:/clip1»+«C:/clip2»+«C:/clip3»).addTitle(«lala»).addAudio(«lolo»))
или лучше даже нарисовать граф обработки в какой нибудь визуальной среде. А граф этот можно сохранить и вызывать потом как программу.
>нужен только текст, потому что человек может…
Почему только? Нужен безусловно текст. Но ваш аргумент никак не обосновывает почему не должно быть ничего кроме текста.
UNIX'ы написаны на си в нем есть естественный механизм передачи параметров через текст. Если бы сегодня кто-то написал систему на управляемом языке (С# или Java) (Фантом, Singularity), я думаю консоль была бы в этой системе именно объектной. А как иначе, это же естественно следует из архитектуры.
Видел какие-то наработки, которые, например, аудиофайл гонят на stdout распарсенный на текстовый формат типа xml/yaml, соответственно обратные преобразователи, и фильтры различные, и редакторы типа sed. То есть поменять титлы в mp3/ogg или битрейт, или конвертировать из mp3 в ogg можно через обычный пайп типа
Но как-то мне это нежизнеспособно показалось, чисто для wow-эффекта «а ещё в консоли можно так». Хотя вроде собирались переписывать stdin, stdout, stderr и стандартные команды, чтоб они по разному работали с разными mimetypes, передаваемые первым параметром в потоке. В общем, чтобы cat music.mp3 музыку играло, cat video.mp4 кино казало и т. п.
Может в деталях ошибся, но общий принцип такой предлагался уже и, кажется, на хабре обсуждался.
Только на нем я могу оставить кодирование на ночь, да и киношки смотрю на нем же. Тут такая штука есть — если перекодировать из x264 в mpeg4 с некоторым повышением битрейта то качество теряется не сильно. но при этом работает ускорение mpeg4 и видео идет без глюков. Даже гонится 1080p на 10 мбит битрейта.
Шелл нужен для организации достаточно простой последовательности выполнения программ. Вы много видели программ, которые выдают объекты на stdout? Я не очень. А в таком виде — это очередной язык программирования, а не стандартизированное простое промышленное расширение для автоматизации
в PowerShell другая политика: вместо массы разрозненных утилит набор командлетов, которые делают все что надо в объектном виде. Надо что-то расширить и сделать свое — пишите командлет. Этих командлетов уже тысячи и число постоянно растет.
Вы, видимо, плохо знаете хотя бы AD. Когда AD распространяется на десятки офисов, а некоторые задачи надо выполнить на всех серверах вот-прям-щас, PS спасает.
PowerShell 3 – Finally on the DLR!