Стандартный терминал Unix систем, будь то MacOS или Linux, неплох. И все же, от инструмента, за которым приходится работать каждый день, хочется большего. Ниже представлена версия того, как сделать его более удобным и продуктивным.
Для начала, замените стандартный терминал на что-нибудь получше. Пользователям MacOS рекомендую iTerm2. Для пользователе прочих Unix систем существуют другие решения, например Guake.
Список функций iTerm2 представлен на официальной странице, среди них: автодополнение, поиск с подсветкой в консоли, сплит панели, копирование без использования мыши, переключение в терминал с помощью горячей клавиши, менеджер паролей и другие.
Чтобы установить iTerm2 вручную: скачайте его с официального сайта, распакуйте скачанный архив и переместите приложение в папку с программами.
Или, если используете Homebrew, установить iTerm2 можно одной командой:
brew cask install iterm2
Самый популярный шорткат — быстрое отображение или скрытие iTerm2. Можно сделать чтобы консоль выезжала сверху, как в Quake.
Но фича не работает из коробки, поэтому потребуется выполнить некоторые действия: перейдите в настройки (iTerm2 — Preferences), далее Profiles — Keys — Configure Hotkey Window, хоткей можно указать любой, остальные настройки как на скриншоте ниже.
Далее (там же в Profiles) перейдите в Window, и установите настройки как на скриншоте (или измените по своему усмотрению). За стиль окна отвечает настройка Style.
Можно двигаться дальше.
Мигрируй на 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, преобразуется в:
Опечатку в последней введенной команде можно исправить так:
^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 и расширяющий его функционал и за счет плагинов и тем.
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) можно будет выбрать нужный каталог.
Автодополнение работает для любой части файлов и каталогов. Чтобы перейти в каталог ~/Downloads, можно написать:
cd load
По нажатию Tab, строка будет преобразована.
cd ~/Downloads/
Oh My Zsh умеет дополнять имена каталогов по всему пути, а не только по последней его части, например:
ls /v/l/apa
По нажатию Tab, строка будет преобразована.
ls /var/log/apache2
А если добавить в файл конфигурации ~/.zshrc часто используемые каталоги в переменную CDPATH, то не нужно будет печатать даже первые буквы имен каталогов.
Дефолтная тема 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
Затем перейдите в настройки iTerm2 — Preferences, далее Profiles — Text и в поле Font выберите скачанный шрифт, например Meslo LG или Droid Sans. Перезапустите терминал, теперь шрифты будут корректно отображаться в выбранной теме.
Цветовые схемы устанавливаются в дополнение к темам, чтобы сделать вид терминала еще привлекательнее, или вместо них — если тему по душе вы еще не подобрали.
Так выглядит мой терминал с установленной темой Agnoster и цветовой схемой Dracula.
Чтобы изменить цветовую схему терминала, скачайте понравившуюся, а затем перейдите в настройки iTerm2 — Preferences, далее Profiles — Color и в поле 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 доступна на странице репозитория. Ознакомьтесь, а лучше запомните.