Лучшая оболочка Linux?[закрыто]
-
06-09-2019 - |
Вопрос
Я использую bash и делаю это уже более десяти лет, но иногда мне интересно, произошли ли какие-либо существенные новые разработки в мире оболочек Linux.
Несколько лет назад Microsoft выпустила PowerShell, который показался очень интересным.Есть ли какие-либо аналогичные инновации в оболочках Linux?
Решение
Вы можете запустить PowerShell в Linux через Паш.Он использует Mono так же, как PowerShell использует .NET.
Другие советы
Ты понимаешь bash 4
совсем недавно был выпущен с множеством новых функций и языковых дополнений?
- Варианты оболочки
globstar
(**/foo
) выполняет рекурсивный поиск,dirspell
исправляет опечатки при раскрытии пути. - Ассоциативные массивы преобразуют строки в строки, а не просто числа в строки.
- А
autocd
Опция оболочки позволяет изменять каталоги, просто вводя путь к каталогу вместо необходимости вводитьcd
спереди. - Сопроцессы
&>>
и|&
операторы перенаправления, которые перенаправляют обаstdout
иstderr
- Множество дополнений к существующим встроенным функциям для повышения удобства написания сценариев.
Проверить:
- «Официальный» список изменений: http://tiswww.case.edu/php/chet/bash/ИЗМЕНЕНИЯ
- Краткое руководство по некоторым новым функциям: http://bash-hackers.org/wiki/doku.php/bash4
Я бы присмотрелся к zsh или fishshell.
Одной из наименее рекламируемых особенностей 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 имя_загрузочного_файла.
В нашем случае включите -f /opt/bash/loadables/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.
Я думаю, что "оригинальная улучшенная оболочка" - это кш93.bash появился в то время, когда исходный код ksh был проприетарным;если бы тогда ksh был с открытым исходным кодом, возможно, не было бы сочтено необходимым иметь новую оболочку (хотя с FSF мало ли что).ksh стоит изучить, особенно из-за его возможности расширения с помощью модулей C, но это не явная победа над bash.Автодополнение bash явно лучше, и этого может быть достаточно, чтобы сделать bash победителем в целом.В любом случае bash и ksh приложили значительные усилия для сближения, поэтому различия незначительны.
Другая интересная оболочка зш, который пытается быть всем, чем является ksh, но в то же время включает csh.Поскольку я никогда не видел никакого смысла или использования в csh, я не тот человек, который будет защищать zsh.Отмечу одну необычную несовместимость:по умолчанию в zsh переменная $var
всегда расширяется до одного токена, даже если он содержит пробелы.Такое поведение несовместимо со всеми другими оболочками, производными от sh, и иногда оно неудобно, но на самом деле оно имеет гораздо больше смысла, чем оригинал, и позволяет сэкономить массу цитирований.
csh была первой оболочкой, в которой было управление заданиями, но, на мой взгляд, ее (и ее преемников) заменили bash и ksh.Писать сценарии никогда не было особенно весело.
Наконец, существует множество крошечных оболочек, предназначенных для спасательных дискет (!) и других спартанских сред, но похоже, что они вас мало интересуют.
(Что касается инноваций, я должен добавить, что более половины скриптов, которые я раньше писал как сценарии оболочки, теперь Луа сценарии.Другие могли бы сказать то же самое о Python или Ruby, а когда-то о Perl или Tcl.Поэтому я думаю, что настоящая инновация — это переход от оболочки к программируемому взаимодействию в командной строке.)
IIRC, Powershell является объектно-ориентированным, тогда как большинство оболочек и утилит Unix работают с текстом.В связи с этим, Беличья скорлупа может вас заинтересовать.Хотя я никогда им не пользовался.
Если ты готов проиграть sh
совместимости, вы можете рассмотреть возможность использования языка сценариев, такого как Python или Tcl, в качестве оболочки. rlwrap
может быть очень удобно, если интерпретатор не обеспечивает редактирование строк, историю команд, завершение и т. д.
Одна из философий относительно оболочек заключается в том, что их следует использовать в первую очередь только для соединения процессов с файлами (вот одна страница, которая поддерживает этот подход).Тем не менее, люди написали с их помощью удивительно сложное программное обеспечение.
Ракушки не являются более инновационными, чем Схема Шелла.Вся мощь Scheme в сочетании с возможностью запуска команд Unix. и встроенный интерпретатор awk (конечно, написанный на Scheme).Единственный недостаток - нужно немного исправление для сборки на 64-битной Linux.
Это не совсем Bourne-Shell, но это другое.Конечно, вам придется выучить Scheme – бонус!
если вам нравится Ruby, вы можете использовать Rush (оболочка Ruby-Unix, а не IRB)
посмотреть презентацию здесь
http://www.slideshare.net/adamwiggins/rush-the-ruby-shell-and-unix-integration-library
или официальный сайт, чтобы увидеть больше примеров