Featured image of post Настройка командной строки

Настройка командной строки

Кратко о настройке командной строки ZSH

Написано вместе с ReBrainMe

Оболочка командной строки используется для любых манипуляций с сервером. Настраивать сервера можно по разному. Важно, чтобы это было комфортно для администратора, а вот главное, чтобы это было эффективно по затратам и времени, и сил. Командная строка может быть красочной, стрелочками разных цветов показывать путь к текущей директории, время, загрузку ЦП и прочий хлам. Приведу пример отсюда:

ohmyzsh

Красиво - да, но множество цветов отвлекает от сути. Кроме того, указывается ветка Git репозитория, которая занимает жизненно важное место в левой части, а можно было бы вправо перенести.

Оболочки командной строки

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

  • bash – де-факто стандартная оболочка, базовая автоподстановка и дополнение путей, есть в большинстве дистрибутивов по умолчанию, часто используется как оболочка для скриптов.
  • fish и zsh – две разные оболочки, которые намного превосходят bash по функционалу, часто на слуху.
  • ksh, tsh, csh … другие оболочки, могут быть ничем не хуже и даже лучше, просто чуть менее распространены

Задача данной статьи субъективно разобраться в том, чем действительно нужно занимать окно терминала и предложить решение на базе zsh.

Что нужно для того, чтобы использование командной строки было эффективным?

Требования к оболочке

  1. Автодополнение путей. Это бесспорно главная функция, которая требуется для перемещения по древу директорий. Казалось бы, в Bash по умолчанию есть автодополнение путей по нажатию Tab дважды. Попробуйте Zsh – там нужно нажать Tab один раз, мелочь казалось бы … А теперь вернитесь на Bash :) Кроме того, Zsh можно настроить таким образом, что выбрасывается список файлов подпадающих под заданный префикс, что лишает необходимости прерывать ввод и делать ls -la, можно вообще стрелочками вариант выбрать. Это не часто используется, но удобно.
  2. Поиск по истории команд. Если Вы уже перешли на ranger, то главным значимым для Вас требованием скорее всего станет это. Сначала мы узнаём про Ctrl+R для поиска команды в истории уже набранных. Удобно, но не совсем. В Zsh можно просто набрать кусочек команды и стрелочками выбрать нужную из автоподсказки. Субъективно удобнее и вот почему: для показа следующей команды из истории нужно опять нажать Ctrl+R, что не совсем удобно, особенно когда прощёлкал нужную.
  3. Выделение начала приглашения ко вводу. Когда листаешь большое количество логов в терминале от разных команд, начинаешь теряться и тратить дополнительное время на различение того, к какой команде относиться тот или иной блок логов, где сама команда и т. д. Выделять текст приглашения ко вводу действительно нужно, но не так, чтобы он затмевал всё… Зачастую, первое что меняет начинающий пользователь нестандартной оболочки – это содержимое переменной PS1. Вот неплохое описание переменных PS1-4.
  4. Легковесность. Вкратце: когда ломишься на сервер, на котором loadavg в десятки раз превышена, очень жалеешь, что поставил в motd или начало .zshrc (.bashrc) прожорливый код по выводу развёрнутой статистики о потреблении ресурсов процессора, памяти, сети, диска и т. д.
  5. Не перегруженность. Пусть и выбрана zsh для ежедневного пользования, все скрипты пишу с shabang на классический sh, потому что она практически везде есть, и синтаксис унифицирован. Иными словами, не рекомендуется писать скрипты используя нестандартные синтаксисы крутых оболочек, заморочишься ставить их на каждый сервер.
  6. Комфортность. Эффективность и комфорт, всё-таки, плотно связаны. Поставить полупрозрачную картинку на фон или подобрать шрифты по вкусу тоже очень важно, когда ловишь себя на мысли, что корявые шрифты и угловатость интерфейса отбивает желание трудиться напрочь. Главное не переусердствовать.

Алиасы

Очень удобно объявлять алиасы для ускорения набора команд.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
alias ..="cd .. && ls -lhA --color=auto"
alias a="ls -lhA --color=auto"
alias d="sudo docker"
alias dc="sudo docker-compose" 
alias die="sudo shutdown now"
alias e="exit"
alias g="git"
alias j="sudo journalctl"
alias k="kubectl"
alias l="ls -lh --color=auto"
alias la="ls -lhA --color=auto"
alias p="ping 8.8.8.8"
alias r="ranger"
alias reborn="sudo shutdown -r now"
alias s="sudo"
alias sctl="sudo systemctl"
alias sr="screen -R"
alias svi="sudo vim"
alias svim="sudo vim"
alias t="terraform"

Ну и немного юмора: alias please=‘sudo’ сделает Ваше общение с компьютером намного мягче.

Конфигурация zsh

Пример пользовательской настройки zsh

Как можно заметить, выделяется каждая команда между операндами разделения типа ; && |, при этом команда вводиться на второй строке, после приглашения с указанием каталога текущей директории и имени пользователя с хостом, это сделало длинные команды более удобными для чтения и сопровождения. Справа честно взятое из стандартных настроек поставляемых к zsh в Manjaro указание текущей ветки Git репозитория. В случае наличия изменений, удалений, добавлений появляются жёлтый, зелёный, красный кружочки – много места не занимало, по этому решено оставить. Пусть будет. При наборе команды, предлагается последняя, которая подходит по префиксу. Подтвердить выбор можно нажав стрелочку вправо. Окно эмулятора Terminator.

Для установки и настройки окна терминала как в примере нужно сделать следующее.

  1. Установить ohmyzsh
  2. Скопировать .zshrc к себе в домашний каталог
1
install -o "$(id -u)" -g "$(id -g)" -m 0644 .zshrc ~/.zshrc
  1. Распаковать плагины
1
2
sudo tar -xpzvf plugins.tgz /
sudo usermod -s "$(command -v zsh)" "$USER"
  1. Сделать zsh интерпретатором по умолчанию
1
sudo usermod -s "$(command -v zsh)" "$USER"
Licensed under Apache License, Version 2.0
Обновлено Dec 01, 2023 14:46 +0200
All rights reserved
Создано при помощи Hugo
Тема Stack, дизайн Jimmy