четверг, 20 марта 2014 г.

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

Моя строка :
PS1="\[\033[1;33;1;34m\]\u@:\[\033[0;32m\]\W> \[\033[0m\]\[\033[0m\]"

Приглашение в командной среде bash изменяется при помощи изменения переменных PS1, PS2, PS3, PS4 и PROMPT_COMMAND.
  •  PS1 - переменная, которая
    задает вид строки приглашения командной строки, которое bash выводит,
    когда ожидает ввода очередной команды пользователем.
  •  PS2 - переменная, отвечающая за вторичный тип приглашения ввода.
  •  PS3 - третичное приглашение, выводится тогда, когда пользователь должен сделать выбор в операторе select.
  •  PS4 - приглашение
    четвертого уровня, выводится при отладки сценариев (скриптов) в начале
    каждой строки перед командой перед исполняющейся командой.
  •  PROMPT_COMMAND - содержимое этой переменной выполняется перед каждой строкой приглашения.

Для того чтобы узнать текущие значения этих переменных можно воспользоваться командой echo.
echo $PS1
Вывод будет примерно следуйщим:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
Для изменения переменной можно пользоваться командой export. Например:
export PS1='\u@\w : '
Изменит приглашение на подобное:
user@~ :
Другим методом изменения данных переменных является задание из в конце файла ~/.bashrc. Это делается примерно таким образом:
PS1 = "\u@\w : "
Задание параметров приглашения командной оболочки производится при помосчи задания управляющих последовательностей:
  • \d   Дата в формате "День, месяц, число", например, Срд, Окт, 17.
  • \h   Имя хоста (hostname) до первой точки
  • \H   Полное имя хоста
  • \t   Текущее время в 24-часовом формате: HH:MM:SS (часы:минуты:секунды)
  • \T   Текущее время в 12-часовом формате: HH:MM:SS
  • \@   Текущее время в 12-часовом формате am/pm
  • \u   Имя пользователя, запустившего оболочку
  • \w   Полное имя текущего рабочего каталога (начиная с корня)
  • \W   Текущий рабочий каталог (без указания пути)
  • \$   Символ #, если оболочка запущена суперпользователем, и символ $, если оболочка запущена обычным пользователем.
  • \n   Новая строка (перевод строки)
  • \s   Имя оболочки
  • \#   Текущий номер команды
  • \!   Порядковый номер данной команды в истории команд
  • \\   Обратный слэш (a backslash)
  • \nnn   Непечатный символ, имеющий восьмеричный код nnn (к примеру esc)
  • \a   Звуковой сигнал (ASCII-код 007)
  • \e   escape (ASCII-код 033)
  • \[   Начало последовательности не печатаемых символов (этот символ
    может быть использован для того, чтобы включить в текст подсказки
    последовательность управляющих символов терминала)
  • \]   Конец последовательности не печатаемых символов
Изменение цвета строки приглашения:
Изменение цвета строки приглашения командной оболочки делается при помощи последовательности
\[\е[#;##m\]
  • # - номер свойства цвета
  • ## - номер цвета
Номера свойств текста:


Свойство                             Код
Значение по умолчанию     0
Повышенная яркость         1
Пониженная яркость          2
Подчеркнутый                    4
Нормальная яркость          5
Инвертированный              7
Скрытый                             8
Номера цветов:
Цвет                Текст      Фон
Черный               30           40
Красный             31           41
Зеленый            32           42
Желтый            33           43
Синий                34           44
Фиолетовый     35           45
Голубой             36           46
Белый                37           47
Например такая последовательность:
\[\e[1;37m\] \u: \[\e[0;37m\]


Как видно из примера управляющая последовательность изменяет свойства всего текста после неё и до другой последовательности.
Таким же образом устанавливается цвет фона и текста, но параметры дублированы. Первые два для фона, вторые - для текста:
\[\е[#;##;#;##m\]
Переменная PS2:
Содержимое переменной PS2 появляется на экране терминала при переносе ввода команды на следующую строку. :

Метод изменения переменных одинаков, не будем останавливаться на каждой отдельно.
Переменная PS3:
Этот вид приглашения используется в скриптах, когда нужно сделать выбор при использовании оператора select.
Переменная PROMPT_COMMAND:
Эта переменная используется для помещения какого либо выражения перед каждой строкой приглашения терминала:
Например если поместить в неё команду ls:
export PROMPT_COMMAND='ls'
То перед каждой строкой приглашения выведется список файлов текущей папки:

Для более подробной информации вы можете воспользоваться справочным руководством:
man bash

Комментариев нет:

Отправить комментарий