Оболочка по умолчанию в Mac OS X - это то bash
, что я обычно рад использовать. Я просто принимаю это как должное. Было бы очень хорошо, если бы он автоматически завершил больше материала , и я слышал хорошие вещи об zsh
этом. Но на самом деле я не склонен тратить часы на настройку параметров, чтобы улучшить использование моей командной строки на крошечные суммы, поскольку моя жизнь в командной строке не так уж и плоха.
(Насколько я понимаю, его bash
также можно настроить для более умного автоматического завершения. Это не то, что мне нужно, а настройка)
Поможет ли zsh
даже в небольшом количестве случаев облегчить мою жизнь? Или это только лучшая оболочка, если вы потратите время, чтобы узнать, почему она лучше? (Примеры тоже подойдут :)
)
@ Родни Амато
и @ Вулкан Эйджер
дают две веские причины, чтобы соответственно придерживаться bash
и переключаться на zsh
. Похоже, мне придется исследовать оба! Ну что ж:)
Есть ли кто-нибудь с мнением с обеих сторон аргумента?
Ответы:
Для случайного использования вам, вероятно, лучше придерживаться bash и просто установить завершение bash.
Установить его довольно просто, возьмите bash-creation-20060301.tar.gz с http://www.caliban.org/bash/index.shtml#completion и распакуйте его с помощью
затем скопируйте файл bash_completion / bash_completion в / etc с помощью
который предложит вам ваш пароль. Возможно, вы захотите создать каталог /etc/bash_completion.d для любых дополнительных скриптов завершения (например, у меня там есть скрипт завершения git).
Как только это будет сделано, последний шаг - убедиться, что файл .bash_profile в вашем домашнем каталоге имеет
в нем, чтобы загрузить файл завершения при входе в систему.
Чтобы проверить это, просто откройте новый терминал и попробуйте выполнить cvs, и он должен показать вам опции cvs в списке завершений.
источник
brew install bash-completion
.brew tap homebrew/versions; brew install bash-completion2
Лично я люблю зш.
Как правило, вы, вероятно, не заметите разницы между ним и 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 ».
Игра с умом ошеломляюще большим количеством вариантов - тоже весело!
источник
find
илиlocate
искать рекурсивно. Но как только вы разрешаете другой программе выполнять поиск, вы теряете границы между именами (если вы не осторожны), а также получаете доступ к внутренним возможностям оболочки, и в основном приходится либо обходиться тем, что предоставляет другая программа, или передать его вывод через программу, подобнуюgrep
,awk
илиsed
(все довольно сложные сами по себе).globstar
опцию в bash, чтобы позволить рекурсивный поиск, как упоминалось выше. Я уверен, что это был не тот случай, когда этот ответ был написан.glob_star_short
inzsh
вы можете теперь делать**.c
, что интерпретируется как**/*.c
.zsh 5.3
и получаюcommand not found: age
сprint *(e:age today now:)
Переключиться на зш. Вы будете иметь доступ к:
zmv
: Вы можете сделать:zmv '(*).mp3' '$1.wma'
для тысяч файлов.zcalc
: Чрезвычайно удобный калькулятор, лучше чемbc
.zparseopts
: Одна строка для анализа произвольных сложных опций, заданных вашему скрипту.autopushd
: Вы всегда можете сделатьpopd
после,cd
чтобы вернуться к предыдущему каталогу.источник
autoload zcalc; zcalc
(хотя я сам просто печатаюpython
всякий раз, когда мне нужен калькулятор).zmv
иzcalc
не доступны из коробки. Не ясно, чтоzmv
это просто переименование файлов; Я думал, что вы могли конвертировать формат. Я не знаю, что вообще означает поддержка "хэшей". Этот пост кажется «полезным» только для тех, кто уже знает zsh.bash
4 был выпущен всего за несколько месяцев до этого ответа.Если все, что вы хотите использовать для ZSH - это лучшее завершение, настройка довольно проста. Поместите это в ваш ~ / .zshrc:
Тем не менее, стоит проверить все другие замечательные возможности ZSH. Приведенный выше пример даст вам довольно простое приглашение с хорошим завершением. Если вы не хотите возиться с конфигурациями, но хотите посмотреть, что ZSH может сделать для вас, Google для "zshrc", и вы получите некоторые готовые к использованию конфигурации, чтобы начать.
источник
У Zsh есть конфигурация консоли. Вы можете настроить его довольно быстро и легко, не прибегая к файлам конфигурации. Я не думаю, что вам потребуется много времени для его настройки, возможно, 10 секунд с использованием только значений по умолчанию, так что попробуйте и попробуйте.
источник
zsh
без каких-либо связанных файлов точек. Чтобы получить его вручную, попробуйтеautoload -U +X zsh-newuser-install; zsh-newuser-install -f
Staale говорит о программе, подобной мастеру (CUI), которая запускается при первом запуске zsh. Просто ответьте на несколько вопросов, просмотрите / измените настройки по умолчанию и настройте их для вас.
IBM developerWorks имеет большие ресурсы по Zsh.
Я не использовал очень продвинутые функции, и до сих пор я не сталкивался с серьезными различиями, которые должны мешать кому-то из bash.
Некоторые примеры:
!? pattern <Tab> выполнит автозаполнение до последней команды в истории соответствия шаблону. Очень полезно.
Вы можете настроить приглашение на RHS. Одним из способов является сохранение приглашения с фиксированной шириной с левой стороны, чтобы все команды хорошо выстраивались в ряд, отображая pwd (или что-либо с переменной шириной) в качестве приглашения с правой стороны.
Вы можете перенаправить ввод из нескольких файлов (еще не попробовав это): cat <file1 <file2 <file3
источник