Oh My Zsh: прокачай свой терминал

Стандартный терминал Unix систем, будь то MacOS или Linux, неплох. И все же, от инструмента, за которым приходится работать каждый день, хочется большего. Ниже представлена версия того, как сделать его более удобным и продуктивным.

Новичкам возможно будет интересно (и полезно):

Знакомьтесь, iTerm2

Для начала, замените стандартный терминал на что-нибудь получше. Пользователям MacOS рекомендую iTerm2. Для пользователе прочих Unix систем существуют другие решения, например Guake.

Список функций iTerm2 представлен на официальной странице, среди них: автодополнение, поиск с подсветкой в консоли, сплит панели, копирование без использования мыши, переключение в терминал с помощью горячей клавиши, менеджер паролей и другие.

iTerm2

Чтобы установить iTerm2 вручную: скачайте его с официального сайта, распакуйте скачанный архив и переместите приложение в папку с программами.

Или, если используете Homebrew, установить iTerm2 можно одной командой:

brew cask install iterm2

Самый популярный шорткат — быстрое отображение или скрытие iTerm2. Можно сделать чтобы консоль выезжала сверху, как в Quake.

iTerm2 Console

Но фича не работает из коробки, поэтому потребуется выполнить некоторые действия: перейдите в настройки (iTerm2Preferences), далее ProfilesKeysConfigure Hotkey Window, хоткей можно указать любой, остальные настройки как на скриншоте ниже.

Configure Hotkey iTetm2

Далее (там же в Profiles) перейдите в Window, и установите настройки как на скриншоте (или измените по своему усмотрению). За стиль окна отвечает настройка Style.

Configure Window iTetm2

Можно двигаться дальше.

Мигрируй на Zsh

Zsh она же Z shell — одна из современных командных оболочек Unix. Мало кто знаком и использует все ее функции. Однако это и не требуется — фреймворк Oh My Zsh, который мы установим далее, позволит настраивать ее и кастомизировать с помощью тем и плагинов.

У пользователей MacOS, скорее всего, Zsh уже установлена, если нет — установите с помощью менеджера пакетов Homebrew, а затем сделайте zsh оболочкой по умолчанию.

brew install zsh
chsh -s /bin/zsh

Установка zsh в Ubuntu и Debian.

apt install zsh
chsh -s /bin/zsh

Пользователи прочих Unix систем наверняка справятся с установкой.

Убедиться, что zsh является оболочкой по умолчанию можно следующей командой.

echo $SHELL

Результат /bin/zsh означает, что все сделано верно.

Далее необходимо перелогиниться. Когда вновь откроете терминал, возможно увидите приветственное сообщение zsh. Ничего не меняйте и выйдите, выбрав q.

Zsh: быстрый старт

Еще до установки Oh My Zsh и плагинов можно оценить мощь Zsh.

Попробуйте ввести следующую команду:

!!

Она вставит в консоль предыдущую команду. Будет полезна, если забыли указать sudo для команды требующей root:

you-sudo-command
error: you cannot perform this operation unless you are root.
sudo !!
sudo you-sudo-command

От предыдущей команды можно взять только аргумент.

cd ~/MyFolder
cd: no such file or directory: cd ~/MyFolder
mkdir !*
mkdir ~/MyFolder

Вставить в консоль последнюю команду, начинающуюся с указанных символов:

!part-of-command

Конструкция похожа на предыдущую, но применима для известной части символов в середине или в конце команды:

!?part-of-command?

Например, !?VIDEO? из моей истории команд, после нажатия на Tab, преобразуется в:

git push --set-upstream origin dt.feature.VIDEO-10000

Опечатку в последней введенной команде можно исправить так:

^dc^cd

А с помощью следующей команды удобно сделать бэкап файла.

cp nginx.conf{,.bak}

Конструкция выше аналогична команде:

cp nginx.conf nginx.conf.bak

Следующая конструкция удалит ранее распакованные файлы. Будет полезна если вы распаковали архив tar.gz не в тот каталог.

rm -f `tar ztf /path/to/file.tar.gz`

Примеры выше, малая доля того, что умеет Zsh. Еще больше возможностей открывается при использовании фреймворка Oh My Zsh.

Установка Oh My Zsh

Oh My Zsh — open source фреймворк, поддерживаемый сообществом. Предназначен для управления настройками Zsh и расширяющий его функционал и за счет плагинов и тем.

Ссылка на репозиторий.

Установка через curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Установка через wget

sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Установка вручную (загрузите скрипт, затем выполните его)

curl -Lo install.sh https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh

sh install.sh

Oh My Zsh установится в папку ~/.oh-my-zsh. Если понадобится удалить Oh My Zsh, не удаляйте папку вручную, а воспользуйтесь специальной командой:

uninstall_oh_my_zsh

Oh My Zsh в действии

Одно из неудобств консоли — перемещение по папкам. Oh My Zsh расширяет возможности автодополнения по кнопке Tab.

Например, Oh My Zsh исправляет регистр букв. Можно написать:

cd ~/de

Затем нажать Tab и команда преобразуется в:

cd ~/Desktop/

Если с введенных символов начинаются имена нескольких каталогов, по нажатию на Tab будет выведен список уточнений, а при повторном нажатии Tab, стрелками (или последующими нажатиями Tab) можно будет выбрать нужный каталог.

Автодополнение в Oh My Zsh

Автодополнение работает для любой части файлов и каталогов. Чтобы перейти в каталог ~/Downloads, можно написать:

cd load

По нажатию Tab, строка будет преобразована.

cd ~/Downloads/

Oh My Zsh умеет дополнять имена каталогов по всему пути, а не только по последней его части, например:

ls /v/l/apa

По нажатию Tab, строка будет преобразована.

ls /var/log/apache2

А если добавить в файл конфигурации ~/.zshrc часто используемые каталоги в переменную CDPATH, то не нужно будет печатать даже первые буквы имен каталогов.

export CDPATH=/var/www:/home/имя_пользователя/MyFolder

вот так

cd MyFolder

Выбор темы

Дефолтная тема Oh My Zsh минималистична и хороша, но я предпочитаю Agnoster. Обратите внимание, как информативно выглядит в ней git-репозиторий.

Чтобы установить тему из репозитория откройте файл ~/.zshrc, и в поле ZSH_THEME замените значение на имя понравившейся темы.

ZSH_THEME="agnoster"

Подобрать тему можно на странице репозитория Oh My Zsh.

Чтобы установить внешнюю тему, скачайте ее, а затем переместите в каталог тем ~/.oh-my-zsh/custom/themes.

Если после установки темы наблюдаете проблему со шрифтами, странные символы или кривые уголочки нужно установить дополнительные шрифты powerline patched fonts.

cd ~/Downloads/
git clone https
://github.com/powerline/fonts.git
cd fonts
./install.sh

Затем перейдите в настройки iTerm2Preferences, далее ProfilesText и в поле Font выберите скачанный шрифт, например Meslo LG или Droid Sans. Перезапустите терминал, теперь шрифты будут корректно отображаться в выбранной теме.

Выбор цветовой схемы

Рекомендую попробовать цветовые схемы iTerm2 Material Design или тему Dracula.

Цветовые схемы устанавливаются в дополнение к темам, чтобы сделать вид терминала еще привлекательнее, или вместо них — если тему по душе вы еще не подобрали.

Так выглядит мой терминал с установленной темой Agnoster и цветовой схемой Dracula.

Чтобы изменить цветовую схему терминала, скачайте понравившуюся, а затем перейдите в настройки iTerm2Preferences, далее ProfilesColor и в поле Color Presets (справа внизу), выберите пункт Import и импортируйте, а затем выберите скачанную тему.

Плагины

Плагины расширяют возможности Oh My Zsh. Список всех плагинов входящих в состав Oh My Zsh приведен на странице репозитория.

Как и в случае с темами, чтобы добавить плагин, нужно прописать его название в файле ~/.zshrc, секция plugins. Например, чтобы активировать плагин docker, добавьте «docker» в секцию plugins.

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
docker
)

Чтобы установить сторонний плагин, его нужно предварительно скачать и положить в каталог сторонних плагинов ~/.oh-my-zsh/custom/plugins.

По умолчанию включен только один плагин — git. Он показывает актуально ли текущее состояние репозитория, активную ветку и есть ли изменения. Таким образом не нужно постоянно проверять git branch -v и git status.

Несколько полезных плагинов из репозитория Oh My Zsh:

npm — добавлят поддержку автодополнения к npm;
vagrant — автодополнения для vagrant, если пользуетесь им;
composer — автодополнения и алиасы;
sudo — если для выполнения команды потребовались права суперпользователя, плагин позволит не возвращаться в начало строки, а нажать два раза Esc, и он добавит sudo в начало команды.

И пара интересных внешних плагинов:

zsh-syntax-highlighting — добавляет подсветку синтаксиса, подсвечивает команду если в написании допущена ошибка;
zsh-autosuggestions — предугадывает команды на основе ранее вводимых.

Алиасы

Алиасы или псевдонимы — это сокращения для длинных команд или даже последовательности команд.

Список текущих алиасов Oh My Zsh можно посмотреть командой:

alias

Свои алиасы можно добавлять в файле ~/.zshrc

Example aliases
alias zshconfig="mate ~/.zshrc"
alias ohmyzsh="mate ~/.oh-my-zsh"
alias dkps="docker ps"
alias dkst="docker stats"

Шпаргалка с алиасами встроенными в Oh My Zsh доступна на странице репозитория. Ознакомьтесь, а лучше запомните.

Ссылки

Официальный сайт iTerm2
Официальный сайт Oh My Zsh
zsh.org
Powerline Fonts

На этом всё. Но вы можете помочь проекту. Даже небольшая сумма поможет нам писать больше полезных статей.

А если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.