Приглашение командной строки линукс

Как изменить формат строки приглашения в терминале Linux

Введение

Строка приветствия или приглашения (prompt) представляет собой текст, после которого пользователь может вводить команды в терминале Linux. В каждом дистрибутиве Linux строка приветствия имеет свою форму, например в CentOS 7 по умолчанию она выглядит так:

Вид строки приглашения по умолчанию в CentOS 7

Форма строки приглашения хранится в переменной PS1 .

Увидеть шаблон, по которому строится строка приглашения можно с помощью вывода переменной PS1 .

Как видим строка состоит из обычных символов, которые выводятся в терминале как есть и экранированных символов вместо которых подставляются следующие данные:

  • \u — (user) имя текущего пользователя.
  • \h — (host) имя текущего хоста.
  • \W — (working directory) путь к рабочему каталогу (каталог, где сейчас находится пользователь).
  • \\$ — тип пользователя (# — для root, $ — для обычных пользователей).

Как изменить формат строки приглашения в терминале

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

Сохраним текущий формат строки приветствия в новую переменную — PS1_SAVE .

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

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

Простые экранируемые символы

  • \a — звуковой сигнал (ASCII: 07)
  • \e — символ escape-последовательности
  • \» — двойные кавычки
  • \\ — обратный слэш
  • \n — новая строка
  • \r — возврат каретки (курсора) на начало строки
  • \[ — начало последовательности непечатных символов
  • \] — конец последовательности непечатных символов
  • \nnn — восьмеричный код символа (\113 -> K)

Вывод даты и времени

  • \d — дата в формате «день недели месяц число»
  • \D <формат даты>— дата в указанном формате, например \D
  • \@ — время в 12 часовом формате «часы:минуты AM\PM»
  • \A — время в 24 часовом формате «часы:минуты»
  • \t — время в 24 часовом формате «часы:минуты:секунды»
  • \T — время в 12 часовом формате «часы:минуты:секунды

Вывод системной информации

  • \h — имя хоста до первой точки
  • \H — полное имя хоста
  • \j — количество работ (jobs), выполняемых в терминале (скрытых после нажатия Ctrl+Z)
  • \s — имя текущей оболочки (вывод значения переменной — $0)
  • \u — имя текущего пользователя
  • \v — версия оболочки BASH
  • \V — более детальная версия оболочки BASH
  • \w — полный путь к текущей директории
  • \W — имя текущей директории
  • \! — номер текущей команды в истории команд
  • \# — номер текущей команды за период сессии
  • \\$ — тип пользователя (# — для root, $ — для всех остальных)

Рассмотрим пример создания кастомной строки приглашения. Выведем имя пользователя, имя хоста и полный путь для каталога, а с новой строки — тип пользователя.

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

Для того чтобы изменения переменной PS1 были сохранены для последующих сессий в терминале, нужно прописать значение этой переменной в файлах настроек терминала

/.bashrc или /etc/bashrc .

Сохранение нового формата строки приглашения на постоянной основе

При каждом запуске терминала значение переменной PS1 устанавливается в соответствии с тем значением, которое указано в файле /etc/bashrc . Однако крайне не рекомендуется изменять что-либо в этом файле. Вместо редактирования файла /etc/bashrc предусмотрен специальный каталог /etc/profile.d , в котором можно создавать свои файлы *.sh с необходимым вам функционалом.

Создадим файл /etc/profile.d/custom.sh для необходимой нам настройки оболочки bash. Данный файл будет автоматически импортирован в /etc/bashrc , поэтому никаких дополнительных действий не потребуется.

Далее уставим нужное нам значение переменной PS1 , я также добавлю немного цвета для строки приветствия.

PS1=»\e[1;38;5;48m\u@\h\e[m:\e[1;38;5;45m\w\e[m\n\\$ »
# Добавим сообщение для авторизованных пользователей
logged_user=$USER # Логин пользователя
echo -e «\e[1;38;5;215mЗдравствуйте $, добро пожаловать на сервер meliorem.ru!\e[0m»

Для применения новых настроек в файле /etc/profile.d/custom.sh необходимо перезапустить терминал. Также для перезапуска можно использовать команду exec.

Теперь когда пользователь будет заходить в свою учетную запись в терминале, он увидит следующий результат.

Результат изменения строки приглашения в файле /etc/profile.d/custom.sh

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

/.bashrc необходимо будет перезапустить оболочку — source

Вы также можете раскрасить свою строку приветствия, о том как это сделать вы можете почитать здесь.

Понравилась статья? Расскажите о ней друзьям!

Источник

Пользовательская настройка командной строки 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=’$\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ‘
else
PS1=’$\u@\h:\w\$ ‘
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»)
\Dthe format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
\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, чтобы не спутать её со строкой обычного пользователя.

Источник

Читайте также:  Где находятся заголовочные файлы windows
Оцените статью