- Пользовательская настройка командной строки Bash
- Проверка оболочки
- Просмотр текущих значений
- Управляющие последовательности bash
- Тестирование командной строки bash
- Настройка цвета
- Сохранение настроек командной строки
- Заключение
- Делаем Linux терминал красивым и удобным
- Добавляем функциональность
- Командная оболочка
- Настройка Zsh
- Настраиваем внешний вид
- Как изменить приглашение командной оболочки bash в Linux?
- Что такое приглашение командной оболочки?
- Стейтменты приглашения bash
- Изменение приглашения bash
- Изменение приглашения bash на постоянку
- Временное изменение приглашения bash
- Популярные пользовательские параметры приглашения bash
- Отображение имени пользователя и имени хоста
- Добавление специальных символов
- Отображение имени пользователя, имени оболочки и версии оболочки
- Добавление даты и времени в приглашение bash
- Убираем всю информацию из приглашения bash
- Отделение обычных пользователей от root
- Дополнительные параметры оболочки
- Добавление в приглашение bash выполнения команды
- Как изменить цвет приглашения bash?
- Откат изменений к настройкам по умолчанию
- Заключение
Пользовательская настройка командной строки Bash
Командная строка очень часто используется для управления сервером Linux.
Многие дистрибутивы системы предлагают достаточно удобные настройки командной строки по умолчанию. Однако иногда возникает необходимость расширить набор функций и возможностей. В таком случае можно выполнить пользовательскую настройку командной строки.
Примечание: Руководство выполнено на Ubuntu 12.04 VPS, но большинство дистрибутивов Linux работает подобным образом.
Проверка оболочки
Прежде чем приступить к работе, нужно убедиться, что вы используете оболочку bash.
Обычно в системах Linux используется именно bash, но иногда некоторые дистрибутивы предлагают другие оболочки.
Чтобы убедиться, что вы работаете в bash, проверьте файл /etc/passwd:
Каждая строка этого файла содержит информацию о каждом отдельном пользователе системы. Найдите в файле текущего пользователя и пользователя root (первый столбец). В последнем поле будет указана оболочка пользователя по умолчанию.
root:x:0:0:root:/root:/bin/bash
. . .
demouser:x:1000:1000. /home/demouser/bin/bash
Если в этом поле указано не /bin/bash, отредактируйте файл с правами root, указав необходимую оболочку:
sudo nano /etc/passwd
После этого выйдите и войдите снова, чтобы обновить настройки.
Просмотр текущих значений
Для начала нужно ознакомиться с текущими настройками конфигурационных файлов bash.
Командная строка bash настраивается с помощью переменных среды PS1 и PS2. PS1 определяет текст приглашения оболочки; именно его вы видите при входе в систему. В Ubuntu по умолчанию этот текст выглядит так:
Символ $ в конце строки указывает, что эта строка принадлежит обычному пользователю. Командная строка пользователя root отличается, она оканчивается символом #.
PS2 настраивает многострочные команды. Чтобы узнать текущее значение переменной PS2, введите:
Нажмите Enter. На экране появится текущее значение переменной; по умолчанию в Ubuntu это >.
Как правило, эти переменные хранятся в файле
/.bashrc, который система читает при запуске интерактивной оболочки.
В Ubuntu 12.04 в этом файле есть такой раздел:
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
# force_color_prompt=yes
if [ -n «$force_color_prompt» ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it’s compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ «$color_prompt» = yes ]; then
PS1=’$
else
PS1=’$
fi
unset color_prompt force_color_prompt
Чтобы настроить цветную командную строку, раскомментируйте параметр:
Теперь нужно установить настройки командной строки. Они размещаются в блоке if-else:
Верхняя часть кода включает поддержку цвета.
Для примера разберём следующую строку:
Она выглядит довольно сложно и содержит непонятные компоненты.
Строки, содержащие debian_chroot, означают, что при работе в окружении chroot командная строка напомнит вам об этом. Это очень полезная функция.
Остальное определение командой строки выглядит так:
Этот код описывает приглашение командной строки, которое появилось при входе в систему, используя управляющие последовательности.
Управляющие последовательности bash
Чтобы получить полный список управляющих последовательностей оболочки, откройте мануал:
\a an ASCII bell character (07)
\d the date in «Weekday Month Date» format (e.g., «Tue May 26»)
\D
\e an ASCII escape character (033)
\h the hostname up to the first `.’
\H the hostname
\j the number of jobs currently managed by the shell
\l the basename of the shell’s terminal device name
\n newline
\r carriage return
\s the name of the shell, the basename of $0 (the portion following the final slash)
\t the current time in 24-hour HH:MM:SS format
\T the current time in 12-hour HH:MM:SS format
\@ the current time in 12-hour am/pm format
\A the current time in 24-hour HH:MM format
\u the username of the current user
\v the version of bash (e.g., 2.00)
\V the release of bash, version + patch level (e.g., 2.00.0)
\w the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable)
\W the basename of the current working directory, with $HOME abbreviated with a tilde
\! the history number of this command
\# the command number of this command
\$ if the effective UID is 0, a #, otherwise a $
\nnn the character corresponding to the octal number nnn
\\ a backslash
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
\] end a sequence of non-printing characters
Как видите, на данный момент строка содержит имя пользователя (\u), символ @, первую часть имени хоста (\h), текущий рабочий каталог (\w) и символ командной строки ($ для обычных пользователей и # для root).
Теперь закройте файл
Тестирование командной строки bash
Конечно, чтобы настроить командную строку, можно просто отредактировать файл
/.bashrc. Однако намного полезнее выполнить пользовательскую настройку строки с помощью самой строки.
Прежде чем приступить к настройке, сохраните текущее значение PS1, чтобы в случае неудачи можно было вернуть прежнее значение.
Теперь в сети есть новая переменная ORIG, в которой будет храниться текущее значение PS1.
Чтобы вернуть командную строку по умолчанию, теперь можно просто ввести:
Для начала попробуйте изменить текст приглашения оболочки, оставив только имя пользователя и символ $.
Теперь строка будет выглядеть так:
Между именем пользователя и символом можно добавить пробел:
Вместо символа $ можно использовать управляющую последовательность \$. Тогда командная строка будет динамически изменяться в зависимости от пользователя.
Также в строку можно добавить любой текст, например:
PS1=»Hello, my name is \u! \$: »
Hello, my name is demouser! $:
Стандартные функции оболочки позволяют вставлять результаты произвольных команд.
Например, в командной строке может отображаться текущая нагрузка на сервер. Для этого нужно загрузить метрику из файла /proc/loadavg в обратных кавычках:
PS1=»\u, load: `cat /proc/loadavg | awk ‘< print $1; >‘` \$: »
demouser, load: 0.01 $:
Также можно добавить в командную строку время и дату. Для этого используйте:
PS1=»[\u@\h, load: `cat /proc/loadavg | awk ‘< print $1; >‘`] (\d — \t) \w \$ »
[demouser@host, load: 0.01] (Thu Feb 20 — 13:15:20)
Однако если путь к каталогу очень длинный, строка будет выглядеть довольно сложно.
cd /etc/systemd/system/multi-user.target.wants
[demouser@host, load: 0.01] (Thu Feb 20 — 13:18:28) /etc/systemd/system/multi-user.target.wants $
Чтобы сохранить в строке всю эту информацию, но упростить её восприятие, можно разделить её на две строки при помощи символа \n:
PS1=»[\u@\h, load: `cat /proc/loadavg | awk ‘< print $1; >‘`] (\d — \t)\n\w \$ »
[demouser@host, load: 0.00] (Thu Feb 20 — 13:20:00)
/etc/systemd/system/multi-user.target.wants $
Многие пользователи предпочитают не делить командную строку, однако иногда это бывает необходимо.
Настройка цвета
Bash позволяет добавлять цвета в командную строку при помощи специальных кодов.
Чтобы определить цвет, код нужно поместить в скобки \[ и \]. Если код цвета не будет заключен в такие скобки, оболочка прочитает его буквально и просто выведет на экран.
Затем цвет нужно задать внутри последовательности скобок \[, например:
Перед последовательностью \] нужно добавить m, чтобы указать, что ы задаёте код цвета.
В целом синтаксис настройки цвета выглядит так:
\[\e[ color_information m\]
Конечно, такой код выглядит достаточно сложно.
- 30: черный
- 31: красный
- 32: зелёный
- 33: жёлтый
- 34: синий
- 35: фиолетовый
- 36: бирюзовый
- 37: белый
Базовые значения можно изменять с помощью атрибутов, добавленных через точку с запятой.
Это поведение отличается зависимости от используемого терминала. Общие атрибуты:
- 0: обычный текст
- 1: жирный (зависит от терминала)
- 4: подчёркивание
К примеру, чтобы получить подчёркнутый зелёный текст, нужно ввести последовательность:
Чтобы сбросить настройки цвета, используйте такую последовательность:
Простая командная строка с именем пользователя и хостом будет выглядеть так:
Также можно настраивать цвет фона.
- 40: черный фон
- 41: красный фон
- 42: зелёный фон
- 43: жёлтый фон
- 44: синий фон
- 45: фиолетовый фон
- 46: Cyan фон
- 47: белый фон
Чтобы задать цвет фона, цвет текста и атрибут, используйте:
\[\e[42;1;36m\]
Как правило, информацию о фоне лучше отделять от остальных настроек:
Иногда при использовании обычного текста (0) в некоторых терминалах не работают настройки цвета текста. Чтобы обойти эту проблему, нужно просто не вводить настройки нормального текста, так как они используются по умолчанию.
Сохранение настроек командной строки
Итак, теперь вы умеете настраивать цветной текст. В руководстве используется такая последовательность:
Также можно отключить использование цвета:
PS1=»[\u@\h, load: `cat /proc/loadavg | awk ‘< print $1; >‘`] (\d — \t)\n\w \$ «
Теперь можно отредактировать переменную PS1 в файле
Как уже говорилось, если вы работаете в окружении chroot, командная строка может сообщить об этом. Эта функция сейчас включена, не отключайте её. Теперь значение переменной будет таким:
Закомментируйте текущее значение PS1 и скопируйте следующую логику debian_chroot:
Перед последними кавычками нужно вставить код пользовательских командных строк. Поскольку текущее определение командной строки использует одинарные кавычки, нужно заменить их двойными.
В первом определении PS1 укажите настройки цветной командной строки, во втором – командной строки без цвета.
Сохраните и закройте файл.
Вы сможете пользоваться новой командной строкой в новой сессии.
Заключение
Bash предлагает множество пользовательских настроек и функций. Часто пользователи настраивают командную строку root, чтобы не спутать её со строкой обычного пользователя.
Источник
Делаем Linux терминал красивым и удобным
Добавляем функциональность
Командная оболочка
Большинство дистрибутивов поставляется со встроенным Bash. Используя дополнения можно сделать из него все что захотите, но гораздо проще этого добиться с Zsh. Почему?
Настройка Zsh
Для начала, установим Zsh (если он уже установлен, например, как в Manjaro, можете пропустить этот пункт):
Когда вам предложат установить Zsh как оболочка по-умолчанию, нажмите Y , чтоб подтвердить.
Oh-My-Zsh — популярный и активно развивающийся фреймворк Zsh, который позволяет гибко настроить оболочку терминала. Установим его:
Подсветка синтаксиса. Гораздо проще ориентироваться по содержимому терминала, когда разные части команд подсвечены разными цветами. Например, директории будут подчеркиваться, а команды — выделяться цветом, отличным от обычного текста. Установим плагин zsh-syntax-highlighting :
Чтоб плагин заработал, его надо подключить.
/.zshrc меняем строку с plugins= :
Если такой строки нет — добавьте её.
Готово! Получаем удобный и функциональный терминал. Теперь сделаем его визуально приятным.
Настраиваем внешний вид
Скачиваем и добавляем в систему шрифт JetBrains Mono Nerd (c иконками):
Выберитеодин из списка, в папке шрифт/complete выберите шрифт без «Windows Compatible», с окончанием «Mono».
Подключаем шрифт и тему.
Если в файле эти строки уже есть — замените их.
Цвета. Важная часть оформления терминала — цветовая схема. Я перебрал много разных схем, редактировал их, остановился на Monokai Dark. Не режет глаза, но при этом приятная и яркая. Список цветов:
В разных терминалах по-разному меняется цветовая схема (обычно, это делается через настройки терминала), но порядок цветов везде одинаковый. Вы можете импортировать этот шаблон в формате Termite и экспортировать его для вашего терминала через terminal.sexy
Запускаем конфигурацию темы: p10k configure .
Настройте тему, выбирая варианты отображения, которые вам больше нравятся.
Финальный штрих — меняем конфиг темы и заменяем встроенные цвета.
Если в файле эти строки уже есть — замените их. Коды цветов можно получить командой
- Отображение только текущей директории:
Источник
Как изменить приглашение командной оболочки bash в Linux?
Обновл. 5 Май 2021 |
В Linux существенная часть работы выполняется из командной оболочки. Одной из самых популярных командных оболочек является bash (сокр. от «Bourne-Again shell»). bash интерпретирует ваши команды и передает их для выполнения операционной системе.
Что такое приглашение командной оболочки?
Всякий раз, когда мы открываем окно терминала, мы видим приглашение командной оболочки:
имя_пользователя — имя пользователя, который в данный момент вошел в систему;
имя_хоста — имя хоста системы;
(тильда) — означает, что в данный момент мы находимся в домашнем каталоге /home/ ;
$ — означает, что текущий пользователь является обычным пользователем (а знак решетки # дает понять, что текущим пользователем является пользователь root).
Стейтменты приглашения bash
bash содержит 4 различных стейтменты приглашения (PS от англ. «Prompt Statement»):
PS1 — это основное приглашение, которое отображается перед каждой командой; по этой причине оно и модифицируется чаще всего.
PS2 — отображается в тех случаях, когда команде требуются дополнительные данные для ввода (например, при использовании многострочных команд).
PS3 — отображается при работе со встроенной в оболочку командой интерактивного меню select .
PS4 — используется для запуска сценария оболочки в режиме отладки.
До сих пор мы работали только с PS1. В большинстве случаев вы будете работать только с PS1 и, возможно, с PS2.
Чтобы увидеть текущее значение PS1, введите следующее:
В зависимости от системы терминал вернет что-то вроде этого:
Теперь посмотрим, что у нас содержится в PS2:
Как видите, здесь у нас только одна угловая скобка:
Повторение той же команды для PS3 вообще вернет полностью пустую строку.
Для PS4 вы увидите знак + .
Изменение приглашения bash
Поведение bash задается через соответствующий файл конфигурации .bashrc, расположенный в домашнем каталоге пользователя. Если имя вашего пользователя, например, diego, то путь к файлу будет следующим:
Или более краткий вариант:
Прежде чем вносить какие-либо изменения в него, настоятельно рекомендуется создать резервную копию данного файла. Для этого откройте окно терминала и введите следующее:
Примечание: Расширение .bak (от англ. «backup») сообщает нам, что файл является резервной копией.
Изменение приглашения bash на постоянку
Откройте для редактирования файл конфигурации bash:
В этом файле вы должны увидеть несколько различных настроек. Некоторые из них в данный момент неактивны и представляют собой обычные комментарии — строки синего или сине-зеленого цвета, отмеченные знаком # . Строки белого цвета используются оболочкой для настройки её поведения.
Прокрутите страницу до конца файла конфигурации и добавьте следующую строку:
Вы можете заменить часть RavesliPrompt> любой строкой текста, которая вам придется по душе.
Сохраните файл (сочетание клавиш Ctrl+O, и затем Enter) и выйдите из редактора (Ctrl+X).
Обновите bash, чтобы применить изменения:
В результате наших манипуляций приглашение оболочки должно измениться на следующее:
Временное изменение приглашения bash
Вы можете временно изменить приглашение оболочки bash с помощью команды export. Изменения оболочки, внесенные данной командой, будут активны ровно до тех пор, пока пользователь не выйдет из системы.
Давайте зададим такой вид приглашения, при котором будет отображаться только имя пользователя:
В результате, приглашение оболочки должно немедленно принять вот такую форму:
Вы можете откатить вышеприведенные изменения, просто выйдя и заново зайдя в систему.
Популярные пользовательские параметры приглашения bash
Вы можете использовать следующие параметры с любым методом изменения приглашения bash: временным (с помощью команды export ) или постоянным (отредактировав файл .bashrc).
Отображение имени пользователя и имени хоста
Используйте опцию -H для отображения полного имени хоста:
Вы должны увидеть имя хоста в приглашении:
Добавление специальных символов
Вы можете добавить в приглашение оболочки специальные символы, расположив их вместе с уже знакомыми вам опциями:
В результате будет отображаться следующее:
Примечание: Я рекомендуем вам сделать так, чтобы приглашение оканчивалось специальным символом или пробелом: двоеточие, угловая скобка или символ пробела непосредственно перед последней кавычкой. Это поможет пользователям визуально отделить приглашение оболочки от вводимой ими в данный момент команды.
Отображение имени пользователя, имени оболочки и версии оболочки
Введите следующую команду, чтобы отобразить имя пользователя, название оболочки ( s от англ. «shell») и её версию ( v от англ. «version»):
Приглашение должно измениться на следующее:
Добавление даты и времени в приглашение bash
Используйте следующие параметры для отображения различных форматов даты и времени:
\d — отображает текущую дату в формате [день_недели]/[месяц]/[число]:
export PS1=»\u@\H>\d «
\t — отображает текущее время в 24-часовом формате:
export PS1=»\u@\H>\t «
\T — отображает текущее время в 12-часовом формате:
export PS1=»\u@\H>\T «
\A — отображает текущее время в 24-часовом формате, но без секунд:
export PS1=»\u@\H>\A «
Примечание: Параметры \u@\H , предшествующие параметру даты и времени, добавляют имя пользователя ( u от англ. «username») и имя хоста ( H от англ. «Hostname»).
Убираем всю информацию из приглашения bash
Используйте эту возможность, чтобы скрыть отображение имен пользователей или имени хоста в приглашении:
Вы должны увидеть следующее:
Отделение обычных пользователей от root
В стандартном приглашении оболочки знак $ указывает на обычного пользователя. Если вы входите в систему как пользователь root, то отображается знак # .
Используйте символ $ , чтобы указать, что текущий пользователь не является пользователем root:
Дополнительные параметры оболочки
Ниже представлен список большинства параметров, которые вы можете использовать для настройки приглашения bash. Стоит оговориться, что не все из них могут поддерживаться конкретным Linux-дистрибутивом:
\a — звуковой сигнал;
\d — дата (день/месяц/число);
\D <формат>— форматированный вывод текущего времени;
\e — символ escape-последовательности;
\h — имя хоста (короткое, до первой точки);
\H — полное имя хоста (доменное имя);
\j — количество задач, обрабатываемых оболочкой в данный момент;
\l — название терминала;
\n — переход на новую строку;
\r — возврат каретки на начало строки;
\s — название оболочки;
\t — время в 24-часовом формате (час:минута:секунда);
\@ — время в 12-часовом формате (AM/PM);
\A — время в 24-часовом формате без секунд;
\u — текущее имя пользователя;
\V — дополнительная информация о версии bash (номер релиза, патча);
\w — текущий рабочий каталог;
\W — базовое имя рабочего каталога;
\! — отображает номер, под которым команда будет занесена в историю команд bash;
\# — отображает номер команды в текущем сеансе без привязки к истории. При запуске нового терминала, нумерация начинается с единицы;
\$ — если пользователем является root, то используется символ # , в противном случае — символ $ ;
\\ — обратная косая черта;
\[ — начало последовательности непечатаемых символов (полезно, если вы хотите изменить цвет, добавить команду или набор инструкций в приглашение);
\] — конец последовательности непечатаемых символов.
Добавление в приглашение bash выполнения команды
Есть еще один трюк, с которым полезно ознакомиться: вы можете добавить в приглашение командной оболочки вывод любой команды. Всякий раз, когда появляется приглашение оболочки, bash запускает команду и отображает её вывод. Для этого просто добавьте имя любой команды, которую вы хотите запустить, между двумя символами машинописного обратного апострофа (кнопка Ё на английской раскладке клавиатуры):
В качестве другого примера, предположим, что вы хотите просмотреть время безотказной работы системы и среднее значение нагрузки, отображаемое командой uptime . Вы можете использовать следующую конструкцию, которая помещает время безотказной работы в свою собственную строку перед остальной частью приглашения:
Как изменить цвет приглашения bash?
Параметры цвета строки приглашения задаются в виде следующей последовательности — \e[X;Y;Zm , где:
\e[ — часть с escape-символом, обозначающая начало изменения цвета;
X — код атрибута текста:
0 — нормальный;
1 — жирный (яркий);
2 — тусклый;
4 — подчеркнутый;
Y — цветовой код текста:
30 — черный;
31 — красный;
32 — зеленый;
33 — коричневый;
34 — синий;
35 — фиолетовый;
36 — голубой;
37 — светло-серый.
Z — цветовой код фона:
40 — черный;
41 — красный;
42 — зеленый;
43 — коричневый;
44 — синий;
45 — фиолетовый;
46 — голубой;
47 — светло-серый.
m — символ, указывающий на конец блока с цветовым кодом.
Примечание: Для того, чтобы терминал корректно выполнил обработку нашей последовательности, необходимо её поместить между символами \[ и \] , т.е. \e[X;Y;Zm станет \[\e[X;Y;Zm\] .
Рассмотрим пример, который временно изменяет текст и цвет строки приглашения на зеленый:
\[ — сочетание символов, обозначающее начало блока изменения атрибутов текста;
\e[ — сочетание символов, обозначающее начало блока цветового кода;
0;32 — цветовой код ( 0 — обычный текст, 32 — зеленый цвет);
m — символ, указывающий на конец блока с цветовым кодом;
\] — сочетание символов, обозначающее конец блока изменения атрибутов текста;
[\u@\h \W]\$ — код, задающий стандартный вид приглашения оболочки;
\[ — сочетание символов, обозначающее начало блока изменения атрибутов текста;
\e[ — сочетание символов, обозначающее начало блока цветового кода;
0 — цветовой код ( 0 — обычный текст белого цвета)
m — символ, указывающий на конец блока с цветовым кодом;
\] — сочетание символов, указывающее на конец блока с цветовым кодом.
В результате мы получим следующее:
Кроме того, если вы скомбинируете опцию яркости с цветовым кодом, то получите более светлую версию заданного цвета. Например, если вы используете цветовой код 1;32 , то получите светло-зеленый цвет вместо обычного зеленого. Если вы используете 1;33 , то получите желтый цвет вместо коричневого.
Откат изменений к настройкам по умолчанию
Есть два способа сбросить вышепредставленные изменения. Для временных изменений (введенных с помощью команды export PS1=»» ) достаточно просто выйти из системы.
Если же вы редактировали файл .bashrc, то есть два способа вернуться к настройкам по умолчанию:
Способ №1: Закомментируйте свои изменения в файле, добавив в начале каждой строки символ # .
Способ №2: Восстановите настройки из резервной копии, введя:
Заключение
Вышеприведенные примеры являются лишь небольшой демонстрацией того, каким образом настраивается внешний вид приглашения оболочки. Не стесняйтесь экспериментировать с различными специальными символами, командами и параметрами, чтобы создать свой вид идеальной командной строки.
Поделиться в социальных сетях:
Источник