Visitors have accessed this post 6346 times.

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

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

Visitors have accessed this post 6346 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 для начинающих: как попасть в IT-индустрию
array(1) { [0]=> object(WP_Term)#11549 (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://medium.com/slalom-build/beginners-guid-to-devops-how-to-make-it-into-the-industry-c1652d59807

Если вы только начинаете карьеру в этой отрасли или хотите перейти в DevOps из другой профессии, первое, что вы узнаете, это то, что DevOps — это методология, а не должность. DevOps нацелен на преодоление разрыва между задачами...

8
0
25 декабря 2020
Docker Swarm: практическое использование
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(8) ["name"]=> string(6) "Docker" ["slug"]=> string(6) "docker" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(8) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(8) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(8) ["category_count"]=> int(8) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "Docker" ["category_nicename"]=> string(6) "docker" ["category_parent"]=> int(0) } } Docker

Автор - Максим Рязанов

Всех приветствую! В этой статье мы познакомимся с преимуществами overlay-сети, а также попрактикуемся с деплоем сервисов и приложений. Будет интересно!

Замечание к статье: для примера будут использоваться три виртуальные машины под управлением Debian 10, развернутые на моем компьютере. Все команды, перечисленные в...

6
2
20 ноября 2020
30 инструментов мониторинга системы Linux, которые должен знать каждый сисадмин
array(1) { [0]=> object(WP_Term)#11549 (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

Ищете способы, как контролировать производительность сервера Linux? В большинстве дистрибутивов Linux уже встроены разные инструменты мониторинга. Используя их, можно посмотреть метрики с информацией о системных процессах. Эти инструменты можно использовать для поиска возможных причин возникновения проблем с производительностью. Команды, которые...

0
0
28 мая 2020