Visitors have accessed this post 1333 times.

Как я выбирал оболочку командной строки

4
0
1333
2 октября 2020 11:34
Автор: Rebrain Me
Linux

Visitors have accessed this post 1333 times.

Автор — Юрий Власов

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

Красиво — да, но множество цветов отвлекает от сути. Кроме того, указывается ветка 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. Комфортность. Эффективность и комфорт все-таки плотно связаны. Поставить полупрозрачную картинку на фон или подобрать шрифты по вкусу тоже очень важно, когда ловишь себя на мысли, что корявые шрифты и угловатость интерфейса отбивает желание трудиться напрочь. Главное, не переусердствовать.

Алиасы

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

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

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

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

При наборе команды, предлагается последняя, которая подходит по префиксу. Подтвердить выбор можно нажав стрелочку вправо. Окно эмулятора Terminator.

Скачать конфигурацию на базе zsh можно здесь.

От редакции

Если вам интересно посещать открытые онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN*Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.
Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Какая операционная система лучше всего подойдет для работы DevOps?
array(1) { [0]=> object(WP_Term)#11801 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

Перевод статьи — https://devops.com/which-desktop-os-is-best-for-devops/

Какую операционную систему лучше использовать инженерам DevOps?

Это вопрос, на который нет однозначного ответа. Разговоры о том, какая ОС «лучше», всегда противоречивы.Я не собираюсь отдавать предпочтение одной операционной системе, когда мы говорим о работе DevOps. Но...

3
4
25 декабря 2020
Инструменты DevOps
array(1) { [0]=> object(WP_Term)#10986 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

Один из основных принципов DevOps – автоматизируйте все. Конечно, для автоматизации того широкого круга процессов, которые затрагивает методология, - разработка, тестирование, внедрение, внесение изменений – нужны эффективные инструменты. В этой статье мы рассмотрим, какие инструменты DevOps используются на разных этапах работы DevOps-инженера....

6
0
16 октября 2020
Как удалять файлы и директории в Linux
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

В некоторых случаях может потребоваться удалить ненужные директории и файлы, чтобы освободить место на жестком диске. Рассказываем, как это сделать.

Для удаления файлов используется команда rm. Предупреждение: удаление файлов и каталогов в Linux с помощью команды rm является необратимым. Поэтому следует проявлять особую осторожность при ее...

4
0
28 мая 2020