Стоит ли переходить на Zsh для повседневного использования?

190

По умолчанию оболочка в Mac OS X bash, которую я обычно рад использовать. Я просто считаю это само собой разумеющимся. Было бы очень приятно, если бы он автоматически завершил больше вещей, и я услышал хорошие вещи о zsh в этом отношении. Но на самом деле у меня нет желания тратить часы, играя с настройками, чтобы улучшить использование моей командной строки на крошечную сумму, так как моя жизнь в командной строке не так уж плоха.

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

Переключение на zsh, даже в небольшом числе случаев, облегчит мне жизнь? Или это только лучшая оболочка, если вы поставите время, чтобы узнать, почему это лучше? (Примеры были бы хороши, тоже :))


@Родни Амато & Амп; @Vulcan Eager дайте две хорошие причины соответственно придерживаться bash и переключиться на zsh. Похоже, мне придется исследовать и то, и другое! Ну хорошо :)

Есть ли у кого-нибудь мнение с обеих сторон аргумента?

  • 14
    Поскольку zsh (почти) является надмножеством bash, вы можете начать с перехода на zsh и использовать его как bash. Тогда вы можете изучать драгоценные камни Zsh постепенно.
  • 0
    Если у вас есть небольшая настройка bash, и вы часто используете оболочку в emacs, это не кажется тривиальным. Я отправил связанный вопрос: stackoverflow.com/questions/13326879/…
Показать ещё 1 комментарий
Теги:
zsh

6 ответов

63
Лучший ответ

Для случайного использования вам, вероятно, лучше придерживаться bash и просто устанавливать завершение bash.

Установка довольно проста, возьмите bash -completion-20060301.tar.gz из http://www.caliban.org/bash/index.shtml#completion и извлеките его с помощью

tar -xzvf bash-completion-20060301.tar.gz

затем скопируйте файл bash_completion/bash_completion в /etc с помощью

sudo cp bash_completion/bash_completion /etc

который запросит у вас пароль. Вероятно, вам захочется создать каталог /etc/bash _completion.d для любых дополнительных скриптов завершения (например, у меня есть git завершение script).

Как только это будет сделано, последний шаг - убедиться, что файл .bash_profile в вашем домашнем каталоге имеет

if [ -f /etc/bash_completion ]; then
     . /etc/bash_completion 
fi

чтобы загрузить файл завершения при входе в систему.

Чтобы проверить это, просто откройте новый терминал и попробуйте выполнить cvs, и он должен показать вам параметры cvs в списке завершений.

  • 0
    Я пробовал описанное выше, однако впоследствии, когда я запускаю bash, я получаю 4 ошибки «ожидается унарный оператор» и 4 ошибки «слишком много аргументов».
  • 12
    Если вы используете homebrew на OSX, вы можете запустить brew install bash-completion .
Показать ещё 1 комментарий
80

Лично я люблю zsh.

Как правило, вы, вероятно, не заметите разницы между ним и bash, пока вы не захотите быстро сделать что-то вроде рекурсивного глобирования:

  • **/*.c например.

Или используйте суффикс-псевдонимы для связывания определенных прогов с разными суффиксами, чтобы вы могли "выполнить" их напрямую. Следующий псевдоним позволяет вам "запускать" исходный файл C в приглашении, просто набрав ./my_program.c - который будет работать точно так же, как если бы вы набрали vim ./my_program.c. (Сортировка эквивалента двойным щелчком по значку файла.)

  • alias -s c=vim

Или распечатайте имена файлов, измененных сегодня:

  • print *(e:age today now:)

Возможно, вы все это делаете в bash, но мой опыт работы с zsh заключается в том, что если что-то я хочу сделать, возможно, я найду его в zsh-lovers. Я также нашел книгу " От Bash до Z-Shell действительно полезно.

Игра с разумом, поразительно большим количеством вариантов, тоже весело!

  • 1
    Первые два примера здесь ничего не значат для меня (случайный пользователь bash, рассматривающий возможность перехода на zsh) - не могли бы вы уточнить, что означает «рекурсивное сглаживание», или что вы подразумеваете под «ассоциировать определенные проги с разными суффиксами»?
  • 5
    @aaronsnoswell: «Рекурсивное смещение» означает поиск в подкаталоге и во всех его подкаталогах файлов, имена которых соответствуют определенному шаблону. Bash не делает этого по умолчанию; Вы find или locate для поиска рекурсивно. Но как только вы разрешаете другой программе выполнять поиск, вы теряете границы между именами (если вы не осторожны), а также получаете доступ к внутренним возможностям оболочки, и в основном приходится либо обходиться тем, что предоставляет другая программа, или передайте вывод через программу наподобие grep , awk или sed (все это довольно сложно).
Показать ещё 3 комментария
37

Переключитесь на zsh. У вас будет доступ к:

  • zmv: Вы можете сделать: zmv '(*).mp3' '$1.wma' для тысяч файлов.
  • zcalc: Чрезвычайно удобный калькулятор, лучше, чем bc.
  • zparseopts: однострочный синтаксический анализатор для разбора произвольных комплексных параметров, заданных вашим script.
  • autopushd: вы всегда можете сделать popd после cd, чтобы вернуться к предыдущей директории.
  • Поддержка плавающей запятой. Это необходимо время от времени.
  • Поддержка хэшей. Иногда это всего лишь ключевая функция.
  • 16
    Примером для zmv должен быть zmv '(*). Mp3' '$ 1.wma'. Пожалуйста, исправьте это, такая неосторожная презентация может сбить с толку и расстроить неопытного.
  • 0
    Я установил zsh (через apt-get), чтобы попробовать zcalc, но он не был включен.
Показать ещё 5 комментариев
12

Если все, что вы хотите использовать ZSH для лучшего завершения, конфигурация довольно проста. Поместите это в свой файл ~/.zshrc:

autoload -U zutil      # [1]
autoload -U compinit   # [2]
autoload -U complist   # [3]
compinit

Тем не менее, стоит проверить все другие замечательные возможности ZSH. Вышеприведенный пример даст вам довольно простое приглашение с хорошим завершением. Если вы не хотите возиться с конфигурациями, но хотите узнать, что ZSH может сделать для вас, Google для "zshrc", и вы получите некоторые готовые варианты использования, чтобы начать работу.

  • 3
    Для каких вещей это добавит завершение? Я не люблю случайно добавлять вещи, не зная, что они делают.
6

zsh имеет конфигурационную конфигурацию консоли. Вы можете настроить его довольно быстро и легко, не имея необходимости возиться с файлами конфигурации. Я не думаю, что вам понадобится много времени, чтобы настроить его, возможно, 10 секунд, просто используя настройки по умолчанию, поэтому продолжайте и попробуйте.

  • 10
    Как вы получаете доступ к этому "консоли GUI"?
  • 0
    Обычно это первое, что вы видите, когда загружаете zsh без каких-либо связанных файлов точек. Чтобы получить его вручную, попробуйте выполнить autoload -U +X zsh-newuser-install; zsh-newuser-install -f
2

Staale говорит о волшебной программе (CUI), которая запускает автозапуск при первом запуске zsh. Просто ответьте на некоторые вопросы, просмотрите/измените настройки по умолчанию и настроенные для вас.

IBM developerWorks имеет большие ресурсы на zsh.

Я не использовал очень продвинутые функции, и до сих пор я не сталкивался с серьезными различиями, которые должны мешать кому-то из bash.

Некоторые примеры:

  • !? шаблон < & Tab GT; будет автозаполнять последняя команда в сопоставлении истории шаблон. Очень полезно.

  • Вы можете настроить приглашение на RHS. Одно использование - сохранить фиксированный ширина слева на левой стороне поэтому все команды выстраиваются хорошо отображение pwd (или что-либо из переменная ширина) как правая сбоку.

  • Вы можете перенаправить ввод из нескольких файлов (но для этого): cat < file1 < file2 < file3

Ещё вопросы

Сообщество Overcoder
Наверх
Меню