ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Быстрые советы и приемы в Bash

Тот, кто начал работать в терминале Linux знаком со строкой по умолчанию в Bash:

[user@$host ~]$

 

Но знаете ли вы, что она полностью настраивается и может содержать некоторую полезную информацию? Вот несколько скрытых сокровищ, которые можно использовать для настройки Bash строки.

Как задать командную строку в Bash?

Строка в Bach задается переменной окружения PS1  (строка приглашения 1), которая используется для интерактивных подсказок оболочки. Существует также переменная PS2, которая используется в случае ввода и требуется для выполнения команды Bash.

[dneary@dhcp-41-137 ~]$ export PS1="[Linux Rulez]$ "
[Linux Rulez] export PS2="... "
[Linux Rulez] if true; then
... echo "Success!"
... fi
Success!

 

Где устанавливается значение PS1?

PS1 является регулярной переменной среды.

Значение системы по умолчанию устанавливается в /etc/bashrc. В нашей системе, подсказка по умолчанию устанавливается с помощью этой строки:

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

 

Она проверяет, является ли значение PS1: \s-\v$ (значение по умолчанию системы), и если она есть, она устанавливает PS1 к значению [\u@\h \W]\\$.

Если вы хотите увидеть пользовательскую подсказку, вы не должны редактировать /etc/bashrc. Вместо этого вы должны добавить его в .bashrc в вашей домашней директории.

Что означает \u, \h, \W, \s, и \v?

В части Подсказки man bash, вы можете найти описание всех специальных символов в PS1 и PS2 . Ниже приведены параметры по умолчанию:

  • \u : Имя пользователя
  • \h : Короткое имя хоста
  • \W : Базовое имя текущего рабочего каталога ( ~ для дома, текущего каталога в другом месте)
  • \s : Название оболочки (Bach или sh, в зависимости от того, как называется оболочка)
  • \v : версия оболочки

Какие другие специальные строки можно использовать в подсказками?

Есть целый ряд специальных строк, которые могут быть полезны.

  • \d : Расширяет даты в формате «Tue Jun 27»
  • \D{fmt} : Позволяет пользовательские форматы даты – смотрите man strftime для доступных опций
  • \D{%с} : Показывает дату и время в текущей локали
  • \n: Включить новую строку (см многострочные подсказки ниже)
  • \w: Полный путь к текущей рабочей директории
  • \H : Полное имя хоста для текущей машины
  • \! : История номера – вы можете запустить любую предыдущую команду с ее историей номера с помощью целеуказателя истории оболочки событий, ! а затем номер для конкретной команды, которая вам необходима.

Есть много других специальных символов, вы можете увидеть полный список в PROMPTING части Bash man page.

Многоканальный подсказки

Если вы используете более длинные подсказки (например, если вы включите \H или \w или полную дату и время), вы можете разбить вещи на две строки. Вот пример многострочные строки а, с указанием даты, времени и текущей рабочей директории в одной строке, и username @hostname на второй линии:

PS1="\D{%c} \w\n[\u@\H]$ "

 

Есть ли какие-либо другие интересные вещи, которые мы можем сделать?

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

PS1="\[\e[31m\]\D{%c}\[\e[0m\]
    \[\e[36m\]\w\[\e[0m\]\n[\[\e[1;43m\]\u\[\e[0m\]@\H]$ "

 

Разберем этот код:

  • \[..\] объявляет некоторые не напечатанные символы
  • \е[.. клавиша эскейп. То, что следует особая последовательность вывода, чтобы изменить цвет (или другие характеристики) в терминале
  • 31m красный текст ( 41м будет красный фон)
  • 36m является голубым текстом
  • 1;43m объявляет желтый фон ( 1;33m будет желтый текст)
  • \[\ е[0m\] в конце сбрасывает цвета терминала по умолчанию

Вы можете найти больше цветов и советы в быстром HOWTO Bash. Вы можете даже сделать текст перевернутым или мигающим! Почему на планете кто-то захочет это сделать, мы не знаем. Но вы можете!

Какие ваши любимые быстрые настройки в Bash? Дай нам знать в комментариях.

Exit mobile version