Командная оболочка Zsh обновлена до версии 5.1. Это первый релиз, в котором трёхцифровая нумерация изменена на упрощённую: первая цифра обозначает номер ветки, а вторая — номер выпуска.
Оболочка Zsh менее популярна, чем Bash, используемая в большинстве Linux-дистрибутивов по умолчанию. Тем не менее, именно её часто выбирают опытные пользователи. Прежде всего, по причине высокой функциональности и удобства практического применения. В частности, именно Zsh выбрал для себя известный популяризатор Linux-десктопа Алексей Федорчук, а к его мнению стоит прислушиваться.
Наверняка не последнюю роль в выборе Zsh играют соображения безопасности, которой разработчики уделяют повышенное внимание. В текущей версии закрыта ещё одна потенциальная уязвимость — для выполнения скопированной команды теперь требуется физическое нажатие на клавишу ввода, поскольку на спецсимвол перевода строки оболочка не реагирует. Это стало возможным благодаря реализации специального режима, который обрамляет в кавычки любой текст, вставляемый из буфера обмена.
Таким образом, Zsh — хороший кандидат на штатную оболочку. По крайней мере, программа заслуживает самого пристального внимания со стороны пользователя, работающего по модели BYOD.
Несмотря на то, что оболочка может настраиваться традиционным для Linux способом ручной правки файла .zshrc, при первом её запуске стартует встроенная программа автоматического конфигурирования. Впрочем, в некоторых дистрибутивах этого может и не произойти, поскольку соответствующий файл создаётся автоматически. Если подобный подход пользователя не устраивает, то ему следует удалить (или переименовать) файл .zshrc.
Впрочем, на практике этого можно не делать, поскольку система автоматического конфигурирования пока не умеет работать со многими полезными опциями, так что без ручной правки .zshrc всё равно не обойтись. Впрочем, эту работу серьёзно упрощает прекрасная документированность проекта.
Речь в данном случае идёт не столько о традиционном man-руководстве, а о специальном пакете zsh-doc, входящем в большинство дистрибутивов. Он содержит подробное руководство в формате HTML, множество примеров и инструкций, а также ответы на часто задаваемые вопросы. Правда, всё это богатство существует только в англоязычном варианте.
Тем не менее, благодаря тому, что Zsh часто выбирают опытные пользователи, в сети можно найти много полезной и точной информации по настройке и применению этой оболочки на русском языке. Поэтому разобраться с нюансами смогут не только полиглоты.
Удобство конфигурирования Zsh лучше всего иллюстрирует метод настройки т. н. приглашения (Prompt). Первый способ — ручная правка файла .zshrc, руководствуясь при этом взятыми из документации примерами.
Причём для того, чтобы не перегружать приглашение обилием информации, в Zsh применяется два вида приглашений: левое (стандартный PROMPT) и правое (RPROMT). Благодаря этому можно разнести данные по всей строке. Например, текущий каталог будет находиться слева, а время — справа. Или наоборот — это уж дело вкуса.
Однако есть и более простой путь. Достаточно набрать команду prompt -p и посмотреть готовые варианты приглашений. Выбор очень большой: от минималистской off до сверхинформативной clint. Дальше можно либо выбрать понравившуюся тему на один сеанс командой prompt «имя темы». А если она оправдает все ожидания, то записать ту же самую строку в файл конфигурации, что сделает выбор постоянным.
Одна из важнейших (по крайней мере, одна из самых востребованных) функций оболочки — автоматическое дополнение ввода по нажатию на клавишу Tab. Здесь Zsh демонстрирует самые широкие возможности, которые позволят пользователю существенно сэкономить время при вводе команд.
В частности, используемая в Zsh система автодополнения позволяет перейти в нужный каталог буквально за пару секунд. Допустим, пользователю требуется открыть каталог /usr/share/X11/xkb/symbols. Для этого ему достаточно ввести следующую последовательность символов: /u/s/x/x/s (просто первые буквы всех каталогов) и нажать на Tab.
Правда, достижение такого впечатляющего результата потребует от пользователя внести некоторые изменения в файл .zshrc. Что, кстати, говорит о том, что автоматические средства конфигурирования пока заметно уступают «ручным».
Во-первых, строка «setopt autocd» укажет, что для перехода в какой-либо каталог не обязательно набирать команду «cd». Что вполне разумно — если пользователь набирает в командной строке имя каталога, то только для того, чтобы в него попасть. Никакой иной цели быть не может, поэтому какая-то команда тут попросту не нужна.
Чтобы ещё больше упростить эту процедуру, можно внести в файл строку cdpath=("список каталогов«). В этом случае в подкаталоги указанных каталогов можно зайти без указания полного пути.
Во-вторых, строка «zstyle ’:completion:*’ matcher-list ’m:{a-z}={A-Z}’» делает оболочку нечувствительной к регистру. Впрочем, по понятным причинам пользоваться этой возможностью следует осторожно.
Наконец, для развёртывания «сокращённого» пути в полный следует дополнить .zshrc следующими строками: «autoload -Uz compinit» и «compinit».
Удобно, если при автодополнении пользователь может увидеть все возможные варианты и выбрать из них нужный. Оболочка Zsh предоставляет такую возможность. Для этого следует дописать в .zshrc строки «setopt menucomplete» и «zstyle ’:completion:*’ menu select=1 _complete _ignored _approximate».
В результате по нажатию на Tab на экран будут выведены все возможные варианты дополнения. Выбор осуществляется клавишами управления курсором.
Вторая важнейшая функция оболочки — сохранение истории команд с возможность быстрого повтора. И тут Zsh демонстрирует самые лучшие качества.
В частности, поддержку т. н. инкрементного поиска ранее введённой команды. Причём двумя способами. Первый — по клавиатурной комбинации Ctrl-r. После нажатия на эти клавиши следует ввести любые символы и оболочка будет показывать команды, в которых эти символы присутствуют. Причём не только в имени самой команды, но и в её аргументах.
Второй способ активируется добавлением в конфигурационный файл строк «bindkey „^[[A“ up-line-or-search» и «bindkey „^[[B“ down-line-or-search». В этом случае перебор команд, включающих в себя уже введённые символы производится при помощи клавиш «вверх» и «вниз».
Поиск файлов — ещё одна сильная сторона Zsh. Например, одна из самых популярных операций удаления всех временных файлов из какого-либо каталога, включая все вложенные подкаталоги, выполняется простой и, что не менее важно, интуитивно понятной командой rm -f path2/**/*~.
Оболочка Zsh вообще нацелена на простоту и лаконичность. Например, для постраничного вывода содержимого текстового файла достаточно ввести команду < «имя файла», а не вспоминать, какая именно программа для этого используется.
Как и в прочих оболочках в Zsh поддерживаются псевдонимы (alias), в том числе и суффиксные. С их помощь также можно заметно упростить выполнение ряда пользовательских операций. Например, если дополнить файл .zshrc строкой «alias -s doc=antiword», то достаточно набрать имя DOC-файла, он будет открыт в программе antiword.
В-общем, на сегодняшний день Zsh — одна из наиболее мощных и удобных оболочек. Причём, как её настройка, так и её использование достаточно просты и интуитивно понятны. У сотрудника, работающего по модели BYOD, есть весьма весомые основания выбрать именно Zsh в качестве штатного инструмента.