Z-shell (или Zsh) — это интерактивная оболочка для операционных систем на базе ядра Linux.
Даже если вы начинающий пользователь, скорее всего, вы уже несколько раз открывали терминал и выполняли там какие-либо команды.То место, где вы это делали называется командная оболочка.
Оболочка, используемая по умолчанию в большинстве дистрибутивов Linux называется Bash.
Оболочка Zsh по своей сути такая же как и Bash, только намного интереснее.
Она поддерживает интерактивное автодополнение по Tab, автоматический поиск файлов, интегрированные регулярные выражения, а также красивые темы.
В этой статье мы рассмотрим как установить и настроить Zsh.
Установка Zsh
Для установки Zsh выполните такую команду:
для debian:
apt install wget git zsh zsh-autosuggestions zsh-syntax-highlighting
для arch:
pacman -S wget git zsh zsh-syntax-highlighting zsh-autosuggestions
После этого вы можете запустить командную оболочку.
Настройка Zsh
Для запуска командной оболочки выполните такую команду:
zsh
При первом запуске Zsh предложит вам настроить вашу оболочку. Здесь вам нужно нажать клавишу 1 чтобы попасть в меню настройки:
Настройка истории
В этом меню давайте начнём с первого пункта. Там находятся настройки истории команд. Нажмите 1, затем, чтобы изменить количество команд, которые будут хранится в истории нажмите 3 (Number of lines of history to save to $HISTFILE) и введите нужное число:
Увеличим количество хранимых строк до 5000. Чтобы вернуться в главное меню нажмите 0 (Remember changes and return to main menu).
Автодополнение
Дальше надо настроить автодополнение. Здесь можно выбрать пункт 1 чтобы оставить все настройки по умолчанию — Turn on completion with default options:
Раскладка клавиатуры
В третьем пункте настроек можно изменить как будут обрабатываться нажатия клавиш клавиатуры во время набора и редактирования команд. По умолчанию используется стиль Emacs, однако, вы можете включить стиль Vim если вы используете этот редактор. Для этого сначала нажмите 3, затем 1 для редактирования раскладки и выберите v для Vim:
Другие опции
В четвёртом пункте собраны другие опции оболочки. Их можно включить или отключить:
-
Change directory given just path — менять директорию если вы введете в терминале путь к не исполняемому файлу;
-
Use additional pattern matching features — разрешить использовать дополнительные символы при составлении шаблонов поиска совпадений, сюда входят символы #, ~ и ^, кроме стандартных * и ?;
-
Unmatched patterns cause an error — выдавать ошибку если шаблон не совпадает;
-
Beep on errors — сигнал при ошибке;
-
Immediately report changes in background job status — сообщать об изменении статуса фоновых задач.
Чтобы активировать опцию нажмите её цифру, а затем нажмите s (set), для деактивации нажмите u (unset).
Сохранение настроек
Когда завершите, возвращайтесь в главное меню. Там, для сохранения всех изменений нажмите 0. Утилита предупредит, что в конфигурационный файл были добавлены строки настройки и редактировать их не стоит, можно редактировать только то, что до или после них. Если же вы захотите исправить что-то в них, снова запустите команду zsh-newuser-install.
После завершения настройки вы попадёте в оболочку.
Приглашение оболочки
Наверное, визитная карточка любой оболочки — это приглашение ввода. Именно его мы постоянно видим во время работы с оболочкой. По умолчанию приглашение выглядит слишком просто. Шаблон основного приглашения находится в переменной $PS1 или $PROMPT. Это приглашение ввода показывается при вводе любой команды и его интереснее всего настроить. Доступны такие переменные:
-
%m — имя хоста;
-
%n — имя пользователя;
-
%? — код возврата последней команды;
-
%d — текущая директория;
Кроме того, здесь поддерживаются различные цвета. Цвет может быть задан для фона или для текста. Следовательно синтаксис установки цвета такой:
%{$назначение[цвет]%}
В качестве назначения можно использовать fg, fg_bold или bg. А в качестве цвета:
-
white — белый;
-
black — чёрный;
-
green — зеленый;
-
cyan — фиолетовый;
-
red — красный;
-
yellow — желтый;
-
magenta — оранжевый.
Для сброса цвета используйте конструкцию %{$reset_color%}. Дальше можно собрать своё приглашение ввода, например:
PS1="%{$fg[green]%}%m@%n%{$fg[red]%}$ %{$fg[blue]%}%d %{$fg[yellow]%}>%{$reset_color%}"
Для того чтобы это заработало в файл ~/.zshrc надо добавить не только эту строчку, но и следующую:
autoload -U colors && colors
В результате вы получите такое приглашение ввода:
Установка oh my zsh
Если всего этого вам мало, то можно установить скрипт oh my zsh, который реализует множество дополнительных возможностей в zsh. Тут можно выбирать различные темы приглашения, добавлять плагины, например, git, добавлены различные возможности автодополнения и многое другое. Для установки этого скрипта выполните:
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Затем загрузите пару плагинов и запустите редактирование файла конфигурации .zshrc того пользователя, под которым сидите:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions git clone https://github.com/mroth/evalcache ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/evalcache
Скрипт установит все плагины и темы oh my zsh в вашу домашнюю папку, а также полностью заменит файл .zshrc на свой.
Настройка темы
Одна из самых интересных возможностей oh my zsh — темы. Темы определяют цвета текста, внешний вид приглашения и многое другое. Все доступные темы можно найти в папке ~/.oh-my-zsh/themes:
Посмотреть как выглядит та или иная тема можно на этой странице. Чтобы выбрать тему откройте файл ~/.zshrc и пропишите имя темы в строчке ZSH_THEME. Именно так выполняется настройка oh my zsh. Мне, например, нравиться тема agnoster, поэтому:
vi ~/.zshrc ZSH_THEME=agnoster
Над строкой «export ZSH=…» добавьте строку, улучшающую отображение цветов в терминале:
export TERM="xterm-256color"
Далее в конце документа найдите блок «plugins=(..)» и допишите внутри названия плагинов, включающих полезные функции (можно просто разделять пробелом):
plugins=( evalcache git git-extras debian tmux screen history extract colorize web-search docker zsh-autosuggestions zsh-syntax-highlighting archlinux )
После добавьте в самый конец файла две строчки, которые позволят клавишами Home/End перемещать курсор в начало/конец набранных команд:
bindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line
Сохраните изменения и переподключитесь к консоли по SSH. Теперь:
-
Благодаря плагину archlinux вместо некоторых длинных команд можно обходиться короткими, список здесь. Работа с pacman и yay существенно облегчится.
-
Консоль хранит историю команд, это избавляет от необходимости помнить дословно, что же там требуется ввести. Можно набрать первые буквы, затем стрелками вверх и вниз перебирать ранее введённые команды.
-
Плагин автозавершения при наборе подсказывает в строке возможную команду. Если он угадал верно, можно нажать стрелку вправо для её ввода.
-
Благодаря zsh не требуется вручную писать полные названия файлов и программ. Кнопка TAB будет выводить список возможных вариантов ниже строки ввода, стрелками выбирается подходящий.
При желании можете пойти дальше и поставить Powerlevel9k, превращающую консоль в нечто космическое.
Оболочка по умолчанию
Когда вы завершите с настройкой останется только установить zsh как оболочку по умолчанию для вашего пользователя. Для этого используйте команду chsh:
chsh
Утилита попросит пароль, а затем путь к исполняемому файлу оболочки, которую вы хотите использовать:
После этого, для текущего пользователя будет использоваться оболочка zsh по умолчанию.