Поднимите руку, если до сих пор не пользуетесь ZSH, предпочитая BASH из стандартной поставки к вашему дистрибутиву. Если вы робко потянули ладонь вверх, этот пост посвящен вам.
У меня несколько раз возникало острое желание попробовать ZSH, но все попытки гибли перед мыслью: «Зачем менять то, что и так работает? Зачем тратить время на настройку и изучение конфига ZSH?». Мне выпала случайность наткнуться на гитхабе на проект oh-my-zsh. Он решил все мои проблемы и помог перейти на ZSH, минуя этапы настройки окружения. То есть, запустил пару команд, сменил интерпретатор и... всё. Вуаля! Переезд окончен.
Сперва я пользовался zsh точно так же, как и bash'ем. Со временем привык к его магическому автодополнению и поиску по истории для конкретной команды. Прошло уже около года. Много раз порывался написать заметку в блоге о проблемах, с которыми могут столкнуться новички. Единственная причина, почему до сих пор не было никаких упоминаний ZSH — проста и банальна. Всё работает «из коробки», нет дискомфорта, ностальгия по башу не мучает. Вы продолжаете пользоваться терминалом, как и прежде, без необходимости менять старые привычки.
Рассылка от slideshare недавно подкинула интересную презентацию “Why Zsh is Cooler than Your Shell”. Я считаю, этот материал лучшим для завлечения тех, кто еще не с нами :-) Посмотрите презентацию и вы поймёте, о чём я говорю.
Итак, вы узнали, почему Z shell лучше BASH:
- Автодополнение для команд, ключей к командам;
- Развертывание пути по первым буквам названия каталогов;
- Исправление опечаток в командах.
Продолжать не буду. Вижу, что вам не терпится попробовать ZSH в деле. Установим необходимые пакеты:
sudo apt-get install git zsh
Git нам понадобится позже. Для установки oh-my-zsh предлагается автоматический режим (через shell-скрипт) и последовательное выполнение команд. На всех моих системах автоматический режим давал сбои, поэтому рекомендую запускать команды по порядку. Клонируем репозиторий:
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
Копируем исходный конфиг .zshrc:
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
А теперь меняем командную оболочку:
chsh -s /bin/zsh
Запускаем командой
zsh
и ~/.zshrc
в любимом текстовом редакторе:vim ~/.zshrc
Сначала подберите тему цветового оформления. За это отвечает переменная
ZSH_THEME
. Затем включите необходимые плагины. У меня загружается всего три:plugins=(git autojump command-not-found)
Для
autojump
потребуется установить одноимённый пакет.В ежедневной работе вы можете столкнуться с записями вида:
$ sudo aptitude install autojump zsh: correct 'aptitude' to '.aptitude' [nyae]?
Чтобы избавить zsh от избытка интеллекта, можно запретить исправление команд:
echo unsetopt correct_all >> ~/.zshrc
На этом всё. Надеюсь, вы осмелитесь попробовать и останетесь довольны.
14 комментариев: ответить
Большинство скриптов в моём дистрибутиве ОС написаны на BASH. Я тоже пишу скрипты и не хочу плодить сущности. ЕМНИП, то у ZSH несколько другой синтаксис.
В BASH тоже есть автодополнение команд и директорий. Если я опечатаюсь, то лучше исправлю свою команду сам так, как я хочу.
Системные скрипты в уважающем себя дистрибутиве должны соответствовать POSIX Shell :)
Что, кстати, и есть в Ubuntu, dash - это примерно он.
А с точки зрения удобства интерактивной работы zsh, после должной настройки, далеко превосходит bash.
Антон, спасибо за ссылку на oh-my-zsh, опробую в ближайшее время ради интереса.
Хотя мой ~/.zshrc кочует у меня из системы в систему вот уже лет 12, с минимальными правками при смене версий.
Я давно уже использую zsh, за основу взял oh-my-zsh, и кастомизировал его немного.
> Если вы робко потянули ладонь вверх
а если я понимаю руку уверенно, осознанно, и со знанием дела?
Выглядит очень интересно! Спасибо :)
Если вы робко потянули ладонь вверх, этот пост посвящен вам.
Присоединяюсь к робко поднявшим руку кверху, ибо
несколько раз возникало острое желание попробовать ZSH, но все попытки гибли перед мыслью: Зачем менять то, что и так работает?
Собственно, в том и причина. Шелл, скажем так, не то, что мне особенно хочется менять и экспериментировать. Вместо этого использую wcd и доволен.
Презентация, впрочем, вдохновляет запалить ВиртуальныйЯщик и поиграться там, но тотальное отсутсвие времени не даёт отлить это в граните :-)
А так оно интересно, конечно. Акулычу спасибо за пищу для размышлений.
P.S.
Откройте ~/.zshrc в любимом текстовом редакторе:
vim
Тебе худеть надо, Акулыч! :-)
Если вы робко потянули ладонь вверх, этот пост посвящен вам
Я руку вверх не тянул, ибо уже более года использую zsh в качестве основной оболочки. Но в любом случае читать интересно
zsh: correct 'aptitude' to '.aptitude' [nyae]?
А вот я пошёл ещё дальше. Используемые фразы переведены на русский, действия nyae расшифрованы (No Yes Abort Edit), ну и цветовое оформление немножко переделано:
SPROMPT=" Заменить $fg_bold[grey]'$reset_color$fg_bold[red]%R$reset_color$fg_bold[grey]'$reset_color на $fg_bold[grey]'$reset_color$fg_bold[green]%r$reset_color$fg_bold[grey]'$reset_color? ($fg_bold[grey]Y$reset_color$fg_bold[green]es$reset_color, $fg_bold[grey]N$reset_color$fg_bold[red]o$reset_color, $fg_bold[grey]A$reset_color$fg_bold[red]bort$reset_color, $fg_bold[grey]E$reset_color$fg_bold[blue]dit$reset_color) $fg_bold[green]>$reset_color "
Выглядит красиво + ошибка сразу же бросается в глаза
кстати,
Порывался мигрировать на zsh несколько раз, но всегда отталкивала предстоящая возня с конфигами и настройкой. Случайно набрёл на гитхабе на oh-my-zsh. С его помощью буквально за пару минут переключился на zsh в качестве основного shell'а, о чём нисколечки не жалею. Подумываю написать заметку об этом.
ZSH rocks! :-) (22.08.2012)
Целый год ждать пришлось :-)
Для bash есть bash-it https://github.com/revans/bash-it
С oh-my-zsh обычно быстро переходят на prezto и вообще yadr.
http://rocket-science.ru/shell/2013/04/04/yadr-for-dummies/
> Поднимите руку, если до сих пор не пользуетесь ZSH, предпочитая BASH из стандартной поставки к вашему дистрибутиву. Если вы робко потянули ладонь вверх, этот пост посвящен вам.
Потянул руку, вообще говоря не убедили :) shell конечно можно использовать по-разному, но по-сути у меня стандартный паттерн сводится к двум вещам:
1) главное - это наращивание pipe-цепочек, в которых присутствуют всякие sed'ы, awk'и и прочие grep'ы. Поможет мне zsh написать sed, awk или grep? - не поможет, он понятия не имеет о том что я хочу написать в одинарных кавычках. А кроме текста в одинарных кавычках, все остальное набирается на автомате, и дополнения чаще всего только мешают.
2) Исполнение одиночных команд. Так получается, что бОльшая часть этих команд уже есть в history, и я даже представляю себе как это быстро из history выковырять - быстрее чем есть мне не надо - я сам могу начать делать ошибки, иногда не очень приятные ошибки.
Вобщем чем мне поможет zsh увы не вижу. Какие-то размалевки консоли при путешествии между директориями? - если я хочу красиво и визуально - есть GUI, а если мне надо быстро, но что-то конкретное - дополнения директорий не поможет :)
@Муравей
> Я тоже пишу скрипты и не хочу плодить сущности.
В начале скрипта вы указываете, какой интерпретатор использовать. Например, #!/bin/bash. Поэтому проблем с zsh не возникнет. Одно другому не мешает.
@alv
> zsh, после должной настройки, далеко превосходит bash
В этом и суть oh-my-zsh. Убрать настройку, чтобы предоставить полную функциональность и «плюшки» из коробки. Он ещё и обновляется легко с помощью команды upgrade_oh_my_zsh.
@Denis Evsyukov
> кастомизировал его немного.
А что менял? oh-my-zsh сразу начал использовать или сперва сам занимался приготовлением конфига? :-)
@alexander barakin
> а если я понимаю руку уверенно, осознанно, и со знанием дела?
Мне остаётся только восхищаться вами.
@Dmitry Koroban
> Выглядит очень интересно!
Не то слово! Называется, один раз попробуй — полюбишь навсегда :-)
@virens
> Презентация, впрочем, вдохновляет запалить ВиртуальныйЯщик и поиграться там
Я как раз искал что-то ободряющее и завлекающее. С наглядными примерами. Презентация стала прямым попаданием.
> Тебе худеть надо, Акулыч! :-)
И пошалить нельзя? :-)
@Vlsu
> Но в любом случае читать интересно
Спасибо!
> Выглядит красиво + ошибка сразу же бросается в глаза
Согласен. Сам люблю, когда необходимая информация выделена цветом. В своих скриптах пользуюсь этим.
> Целый год ждать пришлось :-)
Не в бровь, а в глаз! :-) Мне остаётся только посыпать голову пеплом.
@Анонимный
> Для bash есть bash-it
Спасибо за ссылку.
@Mudasobwa!
> С oh-my-zsh обычно быстро переходят на prezto и вообще yadr.
Интересно, чем оно зеленее и выше. Спасибо, почитаю.
@Vasiliy Litovchenko
> Поможет мне zsh написать sed, awk или grep?
Конечно, чудес не бывает.
> Какие-то размалевки консоли при путешествии между директориями?
Размалевки к достоинствам не относятся. ZSH добавляет комфорт при путешествии в дебрях файловой системы при помощи команды cd. Это нужно попробовать. Мне приятнее выбрать название директории табом, а не писать несколько начальных символов, ожидая взаимопонимания с bash'ем.
> В этом и суть oh-my-zsh. Убрать настройку, чтобы предоставить полную функциональность и «плюшки» из коробки.
Каюсь, так и не попробовал...
Свой первый конфиг zsh'а сочинял лет 12 назад, с тех пор он так и кочует из системы в систему с минимальными правками
ещё в 5-й версии появился автоконфигуратор, вызвается при первой запуске или просто если убрать (переименовать) ~/.zshrc
Если знать, что делаешь, и аккуратно ответить на все вопросы, на выходе получается отличный .zshrc
Но ключевое слово тут - знать, что делаешь, так что для первого знакомства не очень подойдёт.
>Размалевки к достоинствам не относятся.
Плюс очень много. Изначально zsh вообще был чёрно-белым, и я его по сей день таким и пользую.
> ZSH добавляет комфорт при путешествии в дебрях файловой системы при помощи команды cd
Плюс к тому его ls позволяет в простых случаях (а их большинство) обойтись без find, например
плюс глобальные алиасы прекрано служат интеграции zsh'а с любым пакетным менеджером типа apt, yum, zypper
Но вообще объяснить это невозможно, хотя я неоднократно и пытался:
http://fossbook.info/subproj/shell/1102
http://suseana.ru/?p=838
и ещё где-то
zsh надо попробовать и почувствовать
@alexander barakin
> а если я понимаю руку уверенно, осознанно, и со знанием дела?
Саша, в своё время ты доказал мне, что bash пригоден к использованию - до того я в этом очень сомневался.
Но не будем забывать, что bash становится таким только вместе с bash-competion и readline, что проме правки ~/.bashrc нужно не забывать править и inputrc
Ну и что с точки зрения документированности zsh равных себе не имеет, его доки можно читать просто как романы