Почему Zsh круче чем ваш Bash!

Некоторым из нас по долгу службы или хобби приходится хоть сколько-то времени проводить в командной строке. Владельцы *NIX-подобных систем любят копаться в скрытых настройках их систем и программ, администраторы серверов вообще жить не могут без шелл доступа к машинам, а для начинающих пользователей это прекрасная возможность для выхода за рамки, устанавливаемые операционной системой.

Cамая популярная, и, в какой-то мере, дефолтная оболочка, это bash (Bourne-again-shell). Стоит везде, много плюх, всё что надо для жизни есть. Но, в потолок упираешься довольно быстро, и тут оказывается, что есть гораздо более «вкусные» альтернативы. Про одну из них, модную нынче Zsh, и хочу сегодня напомнить, а точнее поделиться списком любимых команд и фич, которые использую каждый день.

Любителей фактов отсылаю к русскоязычной Википедии, а мы сразу в бой.

Автокомплит команды cd

Начинаем набирать команду cd, в любое время во время набора нажимаем TAB и видим список из возможных файлов и папок, которые подпадают под наш паттерн. Причём можно использовать не только TAB, но и выбирать элементы с помощью стрелок! Заблудиться с таким помощником нереально. Нечто подобное есть и в Bash (bash completion), но в далёком от идеала виде.

Автокомплит команды git

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

Расширение путей

Пути в линуксоподобных системах могут быть очень длинными и запутанными, так что даже с помощью автокомплита имён печатать на клавиатуре надо очень много. К счастью, Zsh умеет распознавать полные пути по их частям. Например, начинаем набирать…

Что превращается в…

Замена части пути

Эту фишку осмыслить поначалу непросто, но привыкаешь к ней моментально. В обычной ситуации, когда мы пришли в директорию, например через cd /usr/locan/bin и хотим перейти в соседнюю того же уровня, делаем так cd ../share Теперь же достаточно просто указать название новой директории и оно автоматически подставится в набранный перед этим путь. Возможно, в моем примере всё не так страшно, но если глубина директорий увеличивается, то набирать команды типа cd ../../../../ становится очень неприятно.

Продвинутая строка приветствия

Я бы сказал, красивая и правильная строка приветствия по дефолту. Показывает текущую папку, git репозиторий и много чего другого, если немного поковыряться в настройках.

Автокоррекция синтаксиса

Начинаем набирать неправильный путь, например cd /var/lob и система услужливо предложит нам скорректировать его правильный — cd /var/log Безусловно, одна из «убийственный» фишек, которой пользуешься каждый день.

Глобальные алиасы

В отличие от обычных алиасов, глобальные могут являться частью любой команды (а не самой командой). Задаются в формате alias -g short='long'

Суффикс алиасы

Через суффикс алиасы можно указать, какими программами и командами открывать определенные типы файлов. Например имея алиас alias -s html=chromium можно открывать веб-страницы в Хроме просто набирая названия файлов.

Обычный поиск

Обычный, да не совсем. Как вам такое? Используя так называемый globbing можно фильтровать вывод команд прямо на лету без всякого шаманства.

Рекурсивный поиск

Слегка модифицируем команду из предыдущего скриншота и получим вот такую конструкцию ls -l **/*.log которая выведет список файлов по паттерну не только в текущей, но и в суб-директориях. Секрет — модификатор **/

И это далеко, далеко не всё. Не дошли руки до описания просмотра истории определённой команды, подсветки синтаксиса команд (валидные и невалидные команды подсвечиваются по разному), тем оформления и бесчиленных плагинов и адд-онов. Но, с помощью Гугла и ссылок ниже найти больше информации про Zsh очень просто.

www.zsh.org — Официальный сайт (не всегда работает)

oh-my-zsh — фреймворк для управления конфигами и плагинами

Удачи!