MyTetra Share
Делитесь знаниями!
Настройка приглашения оболочки Bash
Время создания: 30.09.2011 10:36
Текстовые метки: linux, bash, строка, приглашение ввода, prompt
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1317364610bcit47fkws/text.html на raw.github.com

Одна из очень важных переменных имеет имя PS1. Эта переменная задает вид приглашения, которое bash выводит, когда ожидает ввода очередной команды пользователем. По умолчанию этой переменной присвоено значение "\s-\v\$ ". Вообще-то в bash существует четыре приглашения, которые используются в разных ситуациях. Переменная PS1 задает вид строки приглашения, которая выдается тогда, когда оболочка ждет ввода команды. Вторичное приглашение, задаваемое переменной PS2, появляется тогда, когда оболочка ожидает от пользователя ввода еще каких-то данных, необходимых для продолжения работы запущенной команды или программы. По умолчанию переменная PS2 имеет значение ">". Вы уже имели возможность видеть это приглашение, когда запускали команду cat для ввода данных с клавиатуры в файл. Другой пример — команда ftp, после запуска которой приглашение тоже принимает такой вид.

Приглашение, задаваемое переменной PS3, используется в команде select. Приглашение, задаваемое переменной PS4, выводится перед каждой командой, в то время, когда bash отслеживает процесс выполнения. Значение по умолчанию — "+".

Если у вас есть такое желание, вы можете изменить вид переменных PS1 и PS2. При этом можно использовать как любые символы, вводимые с клавиатуры, так и некоторое число специальных символов, которые при формировании строки приглашения декодируются в соответствии с табл. 5.3 (приводим только некоторые из них, для примера; полный список см. в man-странице по утилите bash).

Таблица 5.3. Специальные символы для формирования приглашения

\a Звуковой сигнал (ASCII-код 07)

\d Дата в формате "День, месяц, число", например, Срд, Окт, 17.

\h Имя хоста (hostname) до первой точки

\H Полное имя хоста

\t Текущее время в 24-часовом формате: HH:MM:SS (часы:минуты:секунды)

\T Текущее время в 12-часовом формате: HH:MM:SS

\@ Текущее время в 12-часовом формате am/pm

\u Имя пользователя, запустившего оболочку

\w Полное имя текущего рабочего каталога (начиная с корня)

\W Текущий рабочий каталог (без указания пути)

\$ Символ #, если оболочка запущена суперпользователем, и символ $, если оболочка запущена обычным пользователем.

\nnn Символ, имеющий восьмеричный код nnn

\n Новая строка (перевод строки)

\s Имя оболочки

\# Текущий номер команды

\\ Обратный слэш (a backslash)

\[ Начало последовательности не печатаемых символов (этот символ может быть использован для того, чтобы включить в текст подсказки последовательность управляющих символов терминала)

\] Конец последовательности не печатаемых символов

\! Порядковый номер данной команды в истории команд

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

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

Например, после выполнения команды (поскольку в строке имеется пробел, кавычки обязательны)

[root]# PS1="[\u@\h \W]\$"

в стандартном приглашении будет выводиться квадратная скобка, имя пользователя, символ @, имя компьютера, пробел, название текущего каталога (без указания пути), закрывающая квадратная скобка и символ $ (если в оболочке работает простой пользователь) или # (если оболочка запущена от имени пользователя root).

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования