Академический Документы
Профессиональный Документы
Культура Документы
Ru
Подписка на RSS
ГЛАВНАЯ
Регистрация
Введение Войти
Иногда в терминале вынужден возвращаться к выводу ранее запущенных команд и довольно сложно разглядеть приглашение 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
Ноябрь 2011
Как уже было сказано выше, есть два способа указать значение переменных и есть разница между этими способами. При
указании непосредственно в терминале изменения вступят в силу незамедлительно и будут действительны только в данной
Матки
сессии. При изменении в файле конфигураций вступят в силу только при следующей сессии терминала, но действительны
будут и в последующих сессиях. Так что экспериментируйте с командой экспорт, а понравившейся результат занесите в файл Active Directory AirPrint AirPrint
конфигурации. iOS4 AirPrint iOS5 bruteblock Bruteforce
chroot CMS find
По умолчанию строка приглашения в терминале в Ubuntu для обычного пользователя имеет следующий формат:
FreeBSD Joomla
имя_пользователя@имя_хоста:текущий_каталог$ Listbingo Nginx NTP OpenVZ PHP
PHPFPM 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\] '
skwaps1coloredbg
Описание следующих переменных строки приглашения будет кратким, особо не вдаваясь в подробности, но предоставит вам
представление, за что они отвечают.
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
Оригинал
Поделись:
Связано с категорией: Без рубрики Оставить
комментарий
Пока нет комментариев.
Leave a comment
Имя (required)
Email (required)
Сайт
Закончите арифметическое действие *
2 − 1 =
Отправить
Как спрятать файлы внутри JPEGизображения » « Клонирование дисков во FreeBSD
Перейти наверх ↑
00m.Ru
http://00m.ru/stroka-priglasheniya-v-bash/ 4/4