LINUX.ORG.RU
ФорумTalks

Польза и вред альтернативных шеллов. Стоит ли переходить с bash на что-то ещё?

 , , , ,


3

2

Я знаю, что есть модные шеллы — zsh, fish например, которые вроде как круче, но уже давно пользуюсь bash даже без bash-completion. А вот теперь задумался, что дефолтный шелл всё-таки неидеален и стоило бы его перенастроить или вообще перейти на другой. А ещё есть tcsh, интересно, кто-то его использует ещё?

Да и эмулятор терминала, возможно, стоило бы сменить, только не знаю, на что. Сейчас пользуюсь Konsole, так как терминалы на vte (в тч Gnome Terminal и Terminal из XFCE) неприемлемы по причинам безопасности, но возможностей не хватает малость, например нету нормального сохранения и восстановления сессий — то есть имён вкладок и соответствующих им путей и корректного восстановления истории терминалов после перезагрузки. Так же с некоторыми терминалами есть проблема — они могут исполнить произвольный код просто при выводе на экран содержимого файла без экранирования или потенциально даже при ls или find на директории со специально подобранными именами файлов. Хотелось бы такой эмулятор терминала, в котором esc-последовательности строго ограничены пределами содержимого открытой вкладки, не позволяя изменить, например, её имя.

Кстати ещё есть такой эпический баг-фича: паттерны типа *.txt при раскрытии могут привести к неожиданным последствиям, если забыть поставить перед ними два дефиса точку со слешем. Интересно, в альтернативных шеллах эта проблема решена как-то?

★★★★★
Ответ на: комментарий от lexazloy

Разве набор команды это не есть поиск? :)

Автодополнение не только по командам, но и по опциям, по аргументам(цели для make, например). Меню пригодится, когда нужно выбрать несколько вариантов подряд.

salsa
()
Ответ на: комментарий от Xenius

А почему этот more powerful zle не используется в других программах кроме zsh? Или используется?

Наверное, потому что не встраивается. Но желающие есть. Скрипт-обертка над vared может служить альтернативой rlwrap.

salsa
()
Ответ на: комментарий от salsa

Наверное, потому что не встраивается.

Печально. И что, нет ни одной нормальной либы для редактирования ввода в репле?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от salsa

Что? :)

Ой. Я случайно порезал слова. :)

«Тогда в чуть zsh?» = «Тогда в чём суть zsh?»

А те, что пофичастее, предпочитают не использовать..

Тут-то я не спорю и совсем не заявляю «readline или смерть».

Но утилит огромнейшее количество. Мне нравится, что они работают одиноково и используют одну настройку.

"\C-xs": "show tables like '%%';\e[D\e[D\e[D"

или даже

$if mysql
    "\C-xs": "show tables like '%%';\e[D\e[D\e[D"
$endif

Круто же.

lexazloy
()
Ответ на: комментарий от salsa

Баш так умеет (опции и make).

А, точно. Вот ещё плюс zsh - опции дополняются с описанием. Несколько раз позволило мне избегать вызова `cmd --help` перед использованием.

lexazloy
()
Ответ на: комментарий от lexazloy

чтобы автодополнение было «как в bash».

Тогда в чём суть zsh?

«Как в bash» сделано, возможно, чтобы пользователи bash не меняли привычек. Но автокомплит-то пр-прежнему более «умный».

Еще в zsh язык мощнее.

Тут-то я не спорю и совсем не заявляю «readline или смерть».

Но утилит огромнейшее количество. Мне нравится, что они работают одиноково и используют одну настройку.

"\C-xs": "show tables like '%%';\e[D\e[D\e[D"

или даже

$if mysql
    "\C-xs": "show tables like '%%';\e[D\e[D\e[D"
$endif

Круто же.

Да, для не сложных или редко используемых вещей readline достаточно.

salsa
()
Ответ на: комментарий от lexazloy

А, точно. Вот ещё плюс zsh - опции дополняются с описанием. Несколько раз позволило мне избегать вызова `cmd --help` перед использованием.

Еще можно этот cmd --help парсить(только некий _gnu_generic формат), чтобы сгенерировать варианты для дополнения. Еще можно менять порядок, группировку, порядок группировок, игнорирование вариантов, слеши на конце дир — всякое такое.

salsa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.