Я был пользователем zsh уже довольно давно (до этого tcsh и до этого csh). Я вполне доволен этим, но мне было интересно, есть ли какие-нибудь неотразимые особенности bash, которых нет в zsh. И наоборот, есть ли функции zsh, которых нет в bash. Мое нынешнее ощущение, что Bash лучше:
- Если вы уже знакомы с ним и не хотите изучать новый синтаксис.
- Он будет существовать на большинстве всех * nix-машин по умолчанию, тогда как zsh может быть дополнительной установкой.
Я не пытаюсь начать религиозную битву здесь, поэтому я просто ищу особенности, которые существуют только в одной из оболочек.
Ответы:
Zsh для вулканов. ;-)
Серьезно: bash 4.0 имеет некоторые функции, ранее встречавшиеся только в zsh, например ** globbing:
эквивалентно:
но, очевидно, более мощный.
По моему опыту программируемое завершение bash работает немного лучше, чем zsh, по крайней мере, в некоторых случаях (например, завершение пакетов Debian для aptitude).
Баш должен
Alt + .
вставить!$
zsh has expansion of all variables, so you can use e.g.
for this. zsh can also expand a command in backtics, so
yields
I find it very useful to expand
rm *
, as you can see what would be removed and can maybe remove one or two files from the commmand to prevent them from being deleted.Also nice: using the output from commands for other commands that do not read from stdin but expect a filename:
From what I read bash-completion also supports completing remote filenames over ssh if you use ssh-agent, which used to be a good reason to switch to zsh.
Aliases in zsh can be defined to work on the whole line instead of just at the beginning:
источник
C-M-e
до «shell-expand-line», которая в моем случае будет расширятьсяcat `echo blubb | sed 's/u/a/'`
доcat blabb
иecho $SHELL
доecho /bin/bash
. ТакжеC-x *
к «glob-expand-word», которое бы расширилосьrm *
.Я хотел бы отметить, что bash не устанавливается по умолчанию во FreeBSD, OpenBSD или NetBSD, а также не устанавливается по умолчанию в Solaris 10 (в OpenSolaris он используется по умолчанию), в прошлый раз, когда я использовал AIX, и или Серверы HP-UX также не были установлены по умолчанию.
Кроме того, на OpenSolaris / bin / sh НЕ является Bash. Это кш. Самые большие проблемы, с которыми я сталкиваюсь как носитель программного обеспечения, это люди, которые считают, что / bin / sh - это bash и что он принимает расширенный синтаксис bash. Хотя это, похоже, имеет место в большинстве дистрибутивов Linux, это не так в других местах, и это действительно раздражает.
источник
Хотя я пользователь bash, я нахожу одну из функций zsh довольно крутой: RPS1.
Помните:
Образец:
При использовании чего-то вроде
Вы получаете приглашение слева, а текущий каталог - справа. Он даже исчезает, когда текущая строка становится слишком длинной! Это потому, что Zsh достаточно умен, чтобы отдавать низкий приоритет RPS1.
Вы можете увидеть скриншот этого примера на http://imgur.com/OAZhC .
источник
У Zsh исправлена орфография. Если вы откажетесь от письма (или больше), он поймет, что вы имели ввиду
Он также имеет более надежное завершение вкладки, что мне нравится
Zsh имеет интерактивную утилиту конфигурации, чтобы настроить ее так, как вам нравится.
Некоторые тесты скорости говорят, что zsh быстрее, но я не заметил никакой разницы.
источник
zsh
даже имеет настройку, позволяющую вводить опечатки «одна буква» для использования клавиатуры Дворжака.Я не знаю никаких функций bash, которые не поддерживает zsh. Целью разработки zsh является поддержка любых функций, которые добавляет bash.
Я все еще использую bash вместо zsh. Я редко сталкиваюсь с неотразимыми функциями, которые zsh поддерживает, а bash - нет. Периодически возникающие проблемы с zsh или его отсутствием в некоторых системах делают переход не стоящим.
Наконец, я могу использовать одну и ту же оболочку в каждой системе Unix, не стоит ломать ее из-за функций, которые я никогда не буду использовать.
Функции, присутствующие в zsh, которых нет в bash, выглядят в основном симпатичными, но не такими, которые бы имели значение в повседневной жизни.
источник
Bash имеет много функций, которые раньше были только в Zsh. Теперь у вас есть возможность «завершить умную вкладку» с bash, как это обнаружил любой недавний пользователь Ubuntu.
источник
Замена процесса и расширенная глобализация - это две функции, которые я бы пропустил больше всего. Настройки подсказок тоже довольно крутые - видят уровень вложенности при вводе сложных команд в командной строке. Автозагрузка делает возможным включение множества функций в каждую оболочку.
источник
Я фанат zsh из-за поддержки режима vi, но обнаружил, что он не очень широко используется. Я думаю, что читал, что zsh любит брать популярные функции из других оболочек и объединять их (поэтому в zsh доступны и вещи, специфичные для bash, и вещи, специфичные для csh).
Кто-то также сказал, что я использую zsh, но я не могу подтвердить или опровергнуть этот слух.
источник
Популярность, #bash 430 пользователей. #zsh 123 пользователя. Я считаю, что на веб-сайте zsh есть хорошее сравнение zsh с другими оболочками. Zsh имеет лучшую поддержку режима vi.
источник
Bash использует тот же синтаксис для if и while, который можно использовать в скриптах / bin / sh в командной строке.
Внутри zsh синтаксис другой. Эффективно используя zsh, вы должны запомнить оба, если вы используете оператор if- или while в командной строке
источник
if [[ $test = "test" ]]; then echo "success"; else echo "failure"; fi
как командную строку, так и скрипт, и в обоих случаях он работал как положено. Так что может показаться, что ваши факты не совсем понятны.