Подтвердить что ты не робот

Лучшая оболочка Linux?

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

Несколько лет назад Microsoft выпустила PowerShell, что казалось очень интересным. Есть ли сопоставимые инновации в оболочках Linux?

4b9b3361

Ответ 1

Вы можете запустить PowerShell в Linux через Pash. Он использует Mono, как PowerShell использует .NET.

Ответ 2

Вы понимаете, что bash 4 был недавно выпущен с загрузкой новых функций и языковых дополнений?

  • Параметры оболочки globstar (**/foo) выполняет рекурсивный поиск, dirspell исправляет опечатки при расширении имени пути.
  • Ассоциативные массивы, привязывают строки строк к строкам, а не просто числа к строкам.
  • Параметр autocd shell позволяет изменять каталоги, просто набрав путь к каталогу, вместо того, чтобы поставить перед ним cd.
  • Coprocesses
  • &>> и |& операторов перенаправления, которые перенаправляют как stdout, так и stderr
  • Загрузка дополнений к существующим встроенным устройствам для улучшения удобства написания сценариев.

Отъезд:

Ответ 3

Я бы посмотрел на zsh или fishshell.

Ответ 4

Одна из наименее рекламируемых функций Bash (и нескольких других оболочек) - это возможность писать свои собственные загружаемые файлы, а оболочка запускает их как встроенные.

Предположим, вы пишете загружаемый 'on'.. и хотите, чтобы он работал следующим образом:

on node 123 run some command
on class nodes run some command
on all nodes run some command

... и т.д.

Вы можете проследить простые примеры написания загружаемого файла, затем включить его как Bash с помощью enable -f/path/to/loadable loadable_name

Итак, в нашем случае включите -f/opt/ bash/loadables/on on

... в вашем bashrc, и у вас его есть.

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

то есть:.

#/bin/bash

switch_to my-way-cool-language

funkyfunc Zippy(int p) [[
   jive.wassup(p) ]]

Однако большинство людей не захотят взломать свою оболочку. Я хотел бы указать, что существуют средства, чтобы принять Bash и сделать так, как вы этого хотите, без чрезмерного использования кода ядра.

Смотрите/path-to- bash -source/examples/loadables, вы можете получить это, чтобы летать там, где вы работаете, поскольку вы все еще используете Bash.

Ответ 5

Я думаю, что "оригинальная улучшенная оболочка" ksh93. bash возникла в то время, когда исходный код ksh был запатентован; если бы ksh был открытым исходным кодом, тогда, возможно, не было бы нужным иметь новую оболочку (хотя с FSF вы никогда не знаете). ksh заслуживает изучения, особенно за его способность расширяться через C-модули, но это не явный выигрыш над bash. bash autocompletion явно превосходит, чего может быть достаточно, чтобы сделать bash выигрышем в целом. В любом случае bash и ksh прилагают значительные усилия для сближения, поэтому различия незначительны.

Другая интересная оболочка zsh, которая пытается быть всем, что ksh, а также включает csh. Поскольку я никогда не видел никакого смысла или не использовал csh, я не тот человек, который защищал zsh. Я укажу на одну необычную несовместимость: по умолчанию в zsh переменная $var всегда расширяется до одного токена, даже если она содержит пробелы. Это поведение несовместимо со всеми другими sh-производными оболочками, и это иногда неудобно, но на самом деле оно имеет гораздо больше смысла, чем оригинал, и это экономит чертовски много цитат.

csh была первой оболочкой, которая имела контроль над работой, но, на мой взгляд, ее (и ее преемники) заменяли на bash и ksh. Мне никогда не было весело писать сценарии.

Наконец, существует множество крошечных оболочек, предназначенных для спасательных флоппи (!) и других спартанских сред, но похоже, что вы мало интересуетесь ими.

(Что касается инноваций, я должен добавить, что более половины скриптов, которые я использовал для написания сценариев оболочки, теперь Lua скрипты. Другие могут сказать то же самое для Python или Ruby, или в тот же день, Perl или Tcl. Поэтому я считаю, что настоящие инновации - это переход от оболочки для программируемого взаимодействия в командной строке.)

Ответ 6

IIRC, Powershell является объектно-ориентированным, тогда как большинство оболочек и утилит unix работают с текстом. В связи с этим Squirrel Shell может вас заинтересовать. Я никогда не использовал его.

Ответ 7

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

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

Ответ 8

Корпуса не намного полезнее, чем Scheme Schell. Вся мощь Схемы в сочетании с возможностью запуска команд Unix и встроенного awk-интерпретатора (написано на Схеме, конечно). Единственный недостаток заключается в том, что для создания на 64-разрядной версии Linux требуется крошечный бит patching.

Это не совсем Bourne-shell, но это другое. Конечно, вам нужно узнать Scheme - bonus!