Написано вместе с ReBrainMe
Оболочка командной строки используется для любых манипуляций с сервером. Настраивать сервера можно по разному. Важно, чтобы это было комфортно для администратора, а вот главное, чтобы это было эффективно по затратам и времени, и сил. Командная строка может быть красочной, стрелочками разных цветов показывать путь к текущей директории, время, загрузку ЦП и прочий хлам. Приведу пример отсюда:
Красиво - да, но множество цветов отвлекает от сути. Кроме того, указывается ветка Git репозитория, которая занимает жизненно важное место в левой части, а можно было бы вправо перенести.
Оболочки командной строки ¶
Оболочки бывают разные, пусть и решают одни и те же проблемы очень похожим способом, но настраиваются по разному, обладают разным функционалом. Попробуйте разные и найдите свою! … или напишите сами
- bash – де-факто стандартная оболочка, базовая автоподстановка и дополнение путей, есть в большинстве дистрибутивов по умолчанию, часто используется как оболочка для скриптов.
- fish и zsh – две разные оболочки, которые намного превосходят bash по функционалу, часто на слуху.
- ksh, tsh, csh … другие оболочки, могут быть ничем не хуже и даже лучше, просто чуть менее распространены
Задача данной статьи субъективно разобраться в том, чем действительно нужно занимать окно терминала и предложить решение на базе zsh.
Что нужно для того, чтобы использование командной строки было эффективным?
Требования к оболочке ¶
- Автодополнение путей. Это бесспорно главная функция, которая требуется для перемещения по древу директорий. Казалось бы, в Bash по умолчанию есть автодополнение путей по нажатию Tab дважды. Попробуйте Zsh – там нужно нажать Tab один раз, мелочь казалось бы … А теперь вернитесь на Bash :) Кроме того, Zsh можно настроить таким образом, что выбрасывается список файлов подпадающих под заданный префикс, что лишает необходимости прерывать ввод и делать ls -la, можно вообще стрелочками вариант выбрать. Это не часто используется, но удобно.
- Поиск по истории команд. Если Вы уже перешли на ranger, то главным значимым для Вас требованием скорее всего станет это. Сначала мы узнаём про Ctrl+R для поиска команды в истории уже набранных. Удобно, но не совсем. В Zsh можно просто набрать кусочек команды и стрелочками выбрать нужную из автоподсказки. Субъективно удобнее и вот почему: для показа следующей команды из истории нужно опять нажать Ctrl+R, что не совсем удобно, особенно когда прощёлкал нужную.
- Выделение начала приглашения ко вводу. Когда листаешь большое количество логов в терминале от разных команд, начинаешь теряться и тратить дополнительное время на различение того, к какой команде относиться тот или иной блок логов, где сама команда и т. д. Выделять текст приглашения ко вводу действительно нужно, но не так, чтобы он затмевал всё… Зачастую, первое что меняет начинающий пользователь нестандартной оболочки – это содержимое переменной PS1. Вот неплохое описание переменных PS1-4.
- Легковесность. Вкратце: когда ломишься на сервер, на котором loadavg в десятки раз превышена, очень жалеешь, что поставил в motd или начало .zshrc (.bashrc) прожорливый код по выводу развёрнутой статистики о потреблении ресурсов процессора, памяти, сети, диска и т. д.
- Не перегруженность. Пусть и выбрана zsh для ежедневного пользования, все скрипты пишу с shabang на классический sh, потому что она практически везде есть, и синтаксис унифицирован. Иными словами, не рекомендуется писать скрипты используя нестандартные синтаксисы крутых оболочек, заморочишься ставить их на каждый сервер.
- Комфортность. Эффективность и комфорт, всё-таки, плотно связаны. Поставить полупрозрачную картинку на фон или подобрать шрифты по вкусу тоже очень важно, когда ловишь себя на мысли, что корявые шрифты и угловатость интерфейса отбивает желание трудиться напрочь. Главное не переусердствовать.
Алиасы ¶
Очень удобно объявлять алиасы для ускорения набора команд.
|
|
Ну и немного юмора: alias please=‘sudo’ сделает Ваше общение с компьютером намного мягче.
Конфигурация zsh ¶
Как можно заметить, выделяется каждая команда между операндами разделения типа ; && |
, при этом команда вводиться на второй строке, после приглашения с указанием каталога текущей директории и имени пользователя с хостом, это сделало длинные команды более удобными для чтения и сопровождения. Справа честно взятое из стандартных настроек поставляемых к zsh в Manjaro указание текущей ветки Git репозитория. В случае наличия изменений, удалений, добавлений появляются жёлтый, зелёный, красный кружочки – много места не занимало, по этому решено оставить. Пусть будет.
При наборе команды, предлагается последняя, которая подходит по префиксу. Подтвердить выбор можно нажав стрелочку вправо. Окно эмулятора Terminator.
Для установки и настройки окна терминала как в примере нужно сделать следующее.
- Установить ohmyzsh
- Скопировать .zshrc к себе в домашний каталог
|
|
- Распаковать плагины
|
|
- Сделать zsh интерпретатором по умолчанию
|
|