LINUX.ORG.RU

Так ли хорош Zsh, как его малюют?


0

1

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

Прав ли я? Расскажите о своём пути в шеллах, кто чем пользовался, почему и куда перешёл сейчас?

Я вот понял, что в Zsh использую, в основном, совсем немногие вещи: интервалы в именах файлов [0-9], ну так это наверняка в Bash тоже есть; очень удобное ** (не знаю как объяснить, в общем, вместо звёздочек могут быть и подкаталоги); автодополнение, естественно, менюшкой и... всё что ли? Скорей всего больше всякого, просто привычное не замечаешь.

В общем, хотелось бы видеть здесь аргументированное обсуждение преимуществ и недостатков шеллов в повседневной работе _на_своих_машинах_. А то начнутся доводы, что всем нужен только баш, потому что вдруг, дескать, придется с удалённым хостом работать. Это всё фигня. Главное - удобство.

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

Это всё фигня.

не фигня это. мне пришлось отказаться от ipython в качестве основного шелла только из-за поломанного вывода curses

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

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

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

ipython вполне нагибает bash. но есть существенные минусы в виде лагов. я же говорю.

AGUtilities ★★★
()

**/* - рекурсивный глоббинг, появился в баше 4, нужно включать дополнительно
zsh удобнее для написания скриптов итд итп, тема обсасывалась много раз, место ей в Talks

zolden ★★★★★
()

интервалы в именах файлов [0-9], ну так это наверняка в Bash тоже есть;

Есть в bash.

очень удобное ** (не знаю как объяснить, в общем, вместо звёздочек могут быть и подкаталоги);

Есть в bash.

автодополнение, естественно, менюшкой

А вот менюшек вроде нет.

anonymous
()

Ничем не лучше. Для использования в качестве шелла bash хватает за глаза, там куча фич, надо просто документацию прочитать. Для использования в качестве нормального ЯП любой sh-подобный язык очень слаб. Для мелких скриптов хватает, опять же, bash. Крупные пишу на ruby или tcl.

geekless ★★
()

автодополнение, естественно, менюшкой

И ещё:

setopt CORRECT
SPROMPT="Ошибка! Вы хотели ввести %r вместо %R? ([Y]es/[N]o/[E]dit/[A]bort) "

sin_a ★★★★★
()

В общем, хотелось бы видеть здесь аргументированное обсуждение преимуществ и недостатков шеллов в повседневной работе _на_своих_машинах_.

google://bash+vs+zsh Всё уже давно обсудили, наивно ждать, что здесь увидишь что-то новое.

Bash — стандарт де-факто в мире Linux. Я использую именно bash, потому что хорошо понимаю, что там и как. В Zsh я так и не осилил логику настройки (было лень разбираться), да и продвинутое автодополнение не настолько превосходит оное в bash, чтобы тратить на это время. Автодополнение параметров вообще зло, поскольку оно часто отстаёт от актуального положения дел (особенно в Zsh), но привыкнув к нему, перестаёшь смотреть в руководства, где часто описаны новые опции.

GotF ★★★★★
()

Так ли хорош Zsh, как его малюют?

Нет. Не выношу когда в jabber чат выкидывают из zsh лог с угробишным внешним видом.

bhfq ★★★★★
()

Хороший вопрос, вот только очень частый. Его бы прикрепить или на вики статью сделать...
Использую zsh в основном из-за меню автодополнения оно великолепно. bash + bash-comletition тоже умеет меню, но в zsh оно мне лично больше нравится.
Подсказка при неправильно набранной команде — приятная мелочь.
Поиск в истории по Ctrl+R открыл для себя относительно недавно, вроде, в bash тоже есть.

В целом, придерживаюсь мнения, что bash лучше для скриптов, а zsh для интерактива.

fractaler ★★★★★
()
Ответ на: комментарий от bhfq

Нет. Не выношу когда в jabber чат выкидывают из zsh лог с угробишным внешним видом.

А можно пруф? никогда не замечал такой проблемы.

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

А можно пруф? никогда не замечал такой проблемы.

Он про RPROMPT. Я обычно делаю алиас на сброс обоих промптов перед копипастой выхлопов, но не все так делают.

x3al ★★★★★
()
Ответ на: комментарий от fractaler

придерживаюсь мнения, что bash лучше для скриптов


примеры скриптов конечно потерялись да и man zsh почему-то не работает, вот же беда-то какая...

zolden ★★★★★
()

в баше уже появились глобальные алиасы?

ananas ★★★★★
()

Мне в zsh понравились extended glob и glob qualifiers. Вместо

$ find . -type f -exec chmod a-x {} \;
теперь пишу
$ chmod a-x **/*(*)
find мне теперь не нужен. Плюс мелкие, но такие приятные вещи, как более удобный синтаксис с перенаправлением ввода/вывода в несколько источников, auto_cd, менюшки (в основном, чтобы не писать имена файлов с пробелами, скобками, воскл. знаками).

В общем, man zsh-lovers показывает много годных примеров.

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

extended glob

Есть в bash.

auto_cd

Есть в bash.

не писать имена файлов с пробелами, скобками, воскл. знаками

Дополнение? И это есть в bash.

GotF ★★★★★
()
Ответ на: комментарий от baverman

Ибо задрало на серверах чувствовать дискомфорт.

лучше его чувствовать везде?

p.s. csh->bash->zsh (по работе приходится использовать bsd, там дефолтный сыр, но настроенный насколько возможно под мой же zsh)

lazyklimm ★★★★★
()
Ответ на: комментарий от geekless

Для использования в качестве шелла bash хватает за глаза, там куча фич, надо просто документацию прочитать.

в zsh всё-таки чуть больше, и многие фичи, которые в баше недавно - в zsh появились 100 лет как. Я не понимаю, какие у баша вообще плюсы, кроме дефолтности?

Для мелких скриптов хватает, опять же, bash.

для себя - хоть на брейнфаке, а в остальных случаях за #!/bin/bash нужно бить по голове. только #!/bin/sh

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

лучше его чувствовать везде?

Дискомфорт от чего? Когда внезапно перестают работать привычные штуки, диссонанс в спинном мозге.

То что пришлось отказаться от пары удобных плюшек — это фигня, по большому счету, несравнимая с повсеместным вкорячиванием zsh.

baverman ★★★
()
Ответ на: комментарий от lazyklimm

Это риторический вопрос? Я, кстати, выше писал, почему дополнение параметров не нужно (но я им всё равно пользуюсь, слишком привык).

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

extended glob

Есть в bash.

Но согласись, в zsh он более мощный.

не писать имена файлов с пробелами, скобками, воскл. знаками

Дополнение? И это есть в bash

Нет, именно менюшки. Например, в этом случае мне удобнее стрелками добраться до Vol VI - Organ Works, чем набирать Vol VI.

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

несравнимая с повсеместным вкорячиванием zsh

Свой сервак - в чём проблема вкорячить? Чужой - zsh-static в руки (мне, кстати, редко встречались сервера «общего пользования» без zsh.

lazyklimm ★★★★★
()
Ответ на: комментарий от GotF

поскольку оно часто отстаёт от актуального положения дел (особенно в Zsh)

Не припомню такого( правда Sid/zsh-beta), но даже если так - никто не мешает подправить, «смотря в руководства».

Да, про

перестаёшь смотреть в руководства

$ grep man ~/.zhistory | wc -l

192

$ wc -l /.zhistory

7983

lazyklimm ★★★★★
()
Ответ на: комментарий от sin_a

вот уж действительно: век живи - век учись!

в csh этой фичей давно пользуюсь, а в zsh даже не знал

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

Свой сервак - в чём проблема вкорячить?

Да их как-то многовато. Я даже дефолтные настройки не трогаю, чтоб не таскать .bashrc.

Интерактив меня устраивает, сложные скрипты делаю на питоне. Единственный напряг — нет нормальной shared history. Был момент, bash_completion очень долго обрабатывался и шелл открывался по 10 секунд — хотел убежать на zsh, но как-то само починилось.

baverman ★★★
()
Ответ на: комментарий от GotF

balta2ar

в zsh...extended glob и glob qualifiers... более удобный синтаксис с перенаправлением ввода/вывода в несколько источников, auto_cd, менюшки


GotF

extended glob...auto_cd...Дополнение...есть в bash.


Аргументы из области «Видишь мерседес во дворе? Вот у меня такого же цвета кепка»

zolden ★★★★★
()
Ответ на: комментарий от lazyklimm

никто не мешает подправить

Привычка мешает, потому что даже в голову не приходит, что автодополнение что-то упускает. Из-за этого, например, я долго не знал о команде versions в aptitude :) (упс, и в zsh её до сих пор нет)

[~]>>> history | awk '$2 == «man» {print}' | wc -l
3220
[~]>>> history | wc -l
69226
GotF ★★★★★
()
Ответ на: комментарий от baverman

Я даже дефолтные настройки не трогаю, чтоб не таскать .bashrc.

ппц. В чём проблема нарисовать обёртку в ~/.ssh/config (например).

«Мне лениво таскать свою лопату, потому копать буду тем, что дадут»

lazyklimm ★★★★★
()
Ответ на: комментарий от GotF

потому что даже в голову не приходит, что автодополнение что-то упускает

головопроблемы :D

упс, и в zsh её до сих пор нет

действительно, надо поправить :)

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

Мне лениво таскать свою лопату, потому копать буду тем, что дадут

Очень верно подмечено. Bash — лопаты русские. Zsh — американские, с прорезью для ладони на черенке. Один хрен. Таскаться со своей смысла не вижу.

baverman ★★★
()
Ответ на: комментарий от lazyklimm
[~]>>> history | awk '$2 == «man» {print}' | cut -d' ' -f3- | uniq -u | wc -l
2668
[~]>>> history | cut -d' ' -f3- | uniq -u | wc -l
68776

Я думал, повторов будет больше.

GotF ★★★★★
()
Ответ на: комментарий от lazyklimm

действительно, надо поправить :)

что обнаружил - проблема с дополнением aptitude versions не в zsh, а в aptitude, который по «aptitude -h»(который и используется для формирования списка команд) в списке команд не выводит этот вариант :D

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

а в остальных случаях за #!/bin/bash нужно бить по голове. только #!/bin/sh

Бить ногами нужно за #!/bin/sh , которому на самом деле требуется #!/bin/bash. А за честный #!/bin/bash никого бить не надо. Это точно такой же интепретатор, как awk, perl или tcl, и нет ничего удивительного, что нём пишут программы.

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

Бить ногами нужно за #!/bin/sh , которому на самом деле требуется #!/bin/bash.

за это нужно расстреливать на месте

А за честный #!/bin/bash никого бить не надо. Это точно такой же интепретатор, как awk, perl или tcl, и нет ничего удивительного, что нём пишут программы.

В отличие от названных выще интерпретаторов, нужность баша (лично мне) сомнительна - zsh покрывает его возможности

lazyklimm ★★★★★
()
Ответ на: комментарий от GotF

bash + bash-comletition тоже умеет меню

Как?! GNU readline же не умеет?

Честно не знаю. Но список и перемещение по табу было. Не помню, чем именно оно мне не понравилось.

fractaler ★★★★★
()
Ответ на: комментарий от zolden

придерживаюсь мнения, что bash лучше для скриптов

примеры скриптов конечно потерялись да и man zsh почему-то не работает, вот же беда-то какая...

Тонкий искрометный юмор не оценен. Обрати внимание, что все перечисленные мною плюсы zsh — интерактивные. Так на кой ляд мне zsh для скриптов?

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

Так на кой ляд мне zsh для скриптов?

Думаю, ты просто очень занят чтобы прочитать ман.
И тебе это не надо по работе, а просто типа хобби.
Иначе сам знал бы ответ на этот вопрос

% string="bash sucks"
% for i in {1..${#string}};echo $string[$i]
b
a
s
h

s
u
c
k
s

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

И тебе это не надо по работе, а просто типа хобби.

Это да.
Но есть и другой момент: zsh есть не везде, а bash практически везде.

fractaler ★★★★★
()
Ответ на: комментарий от UnSavant

При отсутствии ошибок оно по меньшей мере не мешает. При наличии ошибки оно в некоторых случаях обработает правильно, а в некоторых нет, то есть уже есть практическая польза. И, при неправильной обработке ошибки, оно по меньшей мере даёт возможность отредактировать или отменить ввод.

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