Вы находитесь на странице: 1из 4

04.09.2016 Строка приглашения в Bash « 00m.

Ru

Подписка на RSS

ГЛАВНАЯ

Строка приглашения в Bash Мета

Регистрация
Введение Войти
Иногда в терминале вынужден возвращаться к выводу ранее запущенных команд и довольно сложно разглядеть приглашение RSS записей
командной строки в символах одинакового цвета. Конечно, можно повторить команду и послать её в канал (pipe) с less или
more, но всё же хотелось бы чтоб строка приглашения как­то выделялась среди всех других в терминале, даже просто из RSS комментариев
эстетических соображений. Неплохо бы использовать цвета в качестве разделителя?
WordPress.org

Переменные среды строки приглашения Календарь

За строку приглашения отвечают такие переменные среды, как PS1, PS2, PS3, PS4 и PROMPT_COMMAND.
СЕНТЯБРЬ 2016
PS1 ­ переменная, которая задает вид строки приглашения командной строки, которое bash выводит, когда ожидает ввода ПН ВТ СР ЧТ ПТ СБ ВС
очередной команды пользователем.
  1 2 3 4
PS2 ­ переменная, отвечающая за вторичный тип приглашения ввода.
5 6 7 8 9 10 11
PS3 ­ третичное приглашение, выводится тогда, когда пользователь должен сделать выбор в операторе select.
12 13 14 15 16 17 18
PS4 ­ приглашение четвертого уровня, выводится при отладки сценариев (скриптов) в начале каждой строки перед командой
19 20 21 22 23 24 25
перед исполняющейся командой.
26 27 28 29 30  
PROMPT_COMMAND ­ содержимое этой переменной выполняется перед каждой строкой приглашения.
« Мар    
Значение каждой переменной можно узнать, введя в терминале:
Архивы
$ echo $имя_переменной
Март 2016

К примеру, узнать значение переменной PS1: Июль 2015

Май 2015

Апрель 2015

Изменить значение переменной можно двумя способами. Март 2015

Июль 2014
Способ первый ­ указать значение непосредственно в терминале с помощью команды export:
Июнь 2014
$ export имя_переменной='значение'
Февраль 2014

К примеру, указать значение переменной PS1: Январь 2014

Ноябрь 2013

Март 2013

Способ второй ­ с помощью вашего любимого редактора дописать в .bashrc требуемые значения: Ноябрь 2012

Октябрь 2012
gedit ~/.bashrc
Сентябрь 2012
И в конце файла добавляем требуемые значения: Июль 2012

Апрель 2012
PS1='\u\w\$ '
Февраль 2012
Все значения нужно заключать в кавычки, одинарные или двойные не имеет значение, но ОБЯЗАТЕЛЬНО заключать!
Январь 2012

Файл конфигурации Bash Декабрь 2011

Ноябрь 2011
Как уже было сказано выше, есть два способа указать значение переменных и есть разница между этими способами. При
указании непосредственно в терминале изменения вступят в силу незамедлительно и будут действительны только в данной
Матки
сессии. При изменении в файле конфигураций вступят в силу только при следующей сессии терминала, но действительны
будут и в последующих сессиях. Так что экспериментируйте с командой экспорт, а понравившейся результат занесите в файл Active Directory AirPrint AirPrint
конфигурации. iOS4 AirPrint iOS5 bruteblock Bruteforce
chroot CMS find
По умолчанию строка приглашения в терминале в Ubuntu для обычного пользователя имеет следующий формат:
FreeBSD Joomla  

имя_пользователя@имя_хоста:текущий_каталог$ Listbingo Nginx NTP OpenVZ PHP
PHP­FPM RegEx RSS RSync syslog
Для суперпользователя (root) уже другой: Unix Vim Virtual Hosts Web­
программирование WGet
root@имя_хоста:текущий_каталог# Windows Wordpress xargs Yahoo
Pipes Виртуализация Диски и файловые
Чтобы изменить строку приглашения обычного пользователя, указать новое значение переменных нужно в файле системы Защита
конфигурации в домашнем каталоге ~/.bashrc, а для root в файле /root/.bashrc. Для этого откройте свой любимый текстовый Конфигурирование
редактор и добавьте нужные значения. Настройка Оптимизация
Организация защиты системы Работа в
сети Редактор Серверные решения
К делу Синхронизация Установка Чистка
Шпаргалка Ядро
1. Переменная PS1
Ссылки
У меня строка приглашения по умолчанию выглядит так:
Купить авиабилеты WOWAvia

http://00m.ru/stroka-priglasheniya-v-bash/ 1/4
04.09.2016 Строка приглашения в Bash « 00m.Ru
Купить авиабилеты WOWAvia

Вид этого приглашения можно задать в переменной PS1.

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

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

Каждая специальная последовательность начинается с обратной косой черты (backslash) ­ "\".

К примеру, последовательность \u указывает, что надо отобразить имя пользователя, \h ­ имя хоста, \w ­ текущую папку.

Теперь объединим всё, чтобы получить приглашение примером выше:

PS1='\u@\h:\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)
\[   Начало последовательности не печатаемых символов (этот символ может быть использован для того, чтобы включить в
текст подсказки последовательность управляющих символов терминала)
\]   Конец последовательности не печатаемых символов

Знание этих последовательностей помогает понять, каким образом модифицировать приглашение командной строки.

Например, установка переменой PS1='[\A]\u@\h:\w\$ ' заменяет, скажем, на такое значение:

С помощью специальных непечатаемых последовательностей можно изменить цвет приглашения командной строки, что
выделит его из обычного текста. Чтобы показать, что вводится значение цвета, необходимо ввести управляющую ASCII­
последовательность \e (или восьмеричный ASCII­кодом \033 ).

Одна и проблем, которая возникает при использовании не печатных последовательностей, заключается в том, что Bash
вычисляет количество символов в приглашении командной строки и использует это число для размещения текста в
терминальном окне. Так как коды цветов не выводятся на экран, то они мешают корректному подсчету. Чтобы предотвратить
подсчет непечатаемых символов, управляющие последовательности необходимо заключать в управляющие скобки \[ и \]. Для
того что бы лучше понять, предлагаю испробовать оба варианта: со скобками и без оных и посмотреть разницу.

Изменению в командной строке поддаётся не только текст, но и фон, поэтому формат цвета можно указать двумя способами ­
для фона и цвета текста или только для текста.

Формат последовательности для фона и цвета :

\[\е[#;##;#;##m\]

Формат последовательности только для текста :

\[\е[#;##m\]

Где # ­ специальный номер свойства цвета, а ## ­ специальный номер цвета. Свойством цвета может быть, например,
повышенная или пониженная яркость. В формате для фона и цвета в начале указывается фон, а после цвет самого текста.

Свойство Код

Значение по умолчанию 0
http://00m.ru/stroka-priglasheniya-v-bash/ 2/4
04.09.2016 Строка приглашения в Bash « 00m.Ru
Значение по умолчанию 0

Повышенная яркость 1

Пониженная яркость 2

Подчеркнутый 4

Нормальная яркость 5

Инвертированный 7

Скрытый 8

Цвет Текст Фон

Черный 30 40

Красный 31 41

Зеленый 32 42

Желтый 33 43

Синий 34 44

Фиолетовый 35 45

Голубой 36 46

Белый 37 47

Полный список кодов цветов зависит от типа используемого терминала.

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

PS1='\[\e[1;31m\][\A]\[\e[1;33m\]\u@\[\e[1;35m\]\h:\[\e[1;34m\]\w\$\[\e[0m\] '

Результат:

Приведу ещё один пример с использованием фона: время раскрасим черным на белом фоне, а всё остальное ярко­синим:

PS1='\[\e[5;47;5;30m\][\A]\[\e[0;1;34m\]\u@\h:\w\$\[\e[0m\] '

skwa­ps1­colored­bg

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

2. Переменная PS2

Вторичная строка приглашения появляется, к примеру, когда ввод команды в первичном приглашении переносится на
следующую строку. Сообщить командному интерпретаторуо том, что ввод продолжается в следующей строке, можно, введя
обратную косую черту "\" в конце строки и введя Enter. По умолчанию отображается как ">". Формат этой переменной
идентичен формату переменной PS1.

А вот почти тот же пример, но строка приглашения разукрашена. Более читабельно?

3. Переменная PS3

Этот вид приглашения используется в скриптах, когда нужно сделать выбор при использовании оператора select. Простой
наглядный пример bash­скрипта и его вывод:

#!/bin/bash
# Пример третичного приглашения

# установим PS3 для выбора ответа в виде трёх знаков больше
PS3=">>> "

echo ­e "\nВаш любимый сайт ?"
http://00m.ru/stroka-priglasheniya-v-bash/ 3/4
04.09.2016 Строка приглашения в Bash « 00m.Ru
echo ­e "\nВаш любимый сайт ?"

select answer in "www.ubuntologia.ru" "www.microsoft.com"
do
echo ­e '\e[37;44m'"\e[1mВаш выбор ­ $answer.\e[0m"
echo ­e "Продолжение работы скрипта...\n"
break
done
exit 0

4. Переменная PS4

Приглашение четвертого уровня PS4 так же используется в скриптах. К примеру ключ ­v заставляет выводить на экран
терминала каждую команду прежде, чем она будет исполнена. Ключом ­x подобно ключу ­v, но выполняет подстановку
команд и перед каждой командой выведет четверичное приглашение. Пример bash­скрипта и его вывод:

#!/bin/bash ­x
# Пример третичного приглашения
PS4='команда > ' # установим приглашение четвертого уровня
echo "Команда номер 1"
echo "Команда номер 2"
echo "Команда номер 3"
echo "Команда номер 4"

4.PROMPT_COMMAND

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

PROMPT_COMMAND='ls; cal'

Так как эта переменная более функциональна, ею можно заменить первичное приглашение, но при этом надо уметь писать
скрипты для Bash, что выходит за рамки повествования. Для более подробной информации читайте: man bash.

Автор статьи: sKwa

Оригинал

Поделись:
                     

Связано с категорией: Без рубрики Оставить
комментарий

Комментарии (0) Пинги (0) (подписаться на новые комментарии в этой ветке)

Пока нет комментариев.

Leave a comment

Имя  (required)

E­mail  (required)

Сайт

Закончите арифметическое действие *

2  −  1  =   
Отправить  

Как спрятать файлы внутри JPEG­изображения » « Клонирование дисков во FreeBSD

Перейти наверх ↑
00m.Ru

http://00m.ru/stroka-priglasheniya-v-bash/ 4/4

Вам также может понравиться