Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Как изменить строку приглашения (bash prompt) в терминале?

Поиск:
За вид строки приглашения отвечают переменные окружения PS1 и PROMPT_COMMAND.
Собственно, сам вид строки определяется в переменной PS1, а содержимое переменной PROMPT_COMMAND вычисляется каджый раз при выводе приглашения.
Простая строка приглашения может выглядеть так:
Код

shmel@nirvana:


При этом переменная PS1 выглядит так:
Код

PS1="\u@\h: "

Экранированные символы u и h при генерации значения PS1 будут заменены на имя текущего пользователя и имя машины соотвественно. Таких экранированных спецсимволов около двух десятков, подробности - в man bash.
Попробуем сделать следующее:
Код

PROMPT_COMMAND="date +%H:%M:%S"
PS1="\u@\h: "

Теперь у нас над строкой приглашения болтаются часики.
С помощью специальных непечатаемых escape-последовательностей можно изменять цвет символов и их фона. Такие последовательности должны быть заключены в \[\033[ и \], а после кода цвета должна стоять буква "m"
Коды у цветов такие:
Код

Black        0;30
Blue         0;34
Green        0;32
Cyan         0;36
Red          0;31
Purple       0;35
Brown        0;33
Light Gray   0;37
Dark Gray    1;30
Light Blue   1;34
Light Green  1;32
Light Cyan   1;36
Light Red    1;31
Light Purple 1;35
Yellow       1;33
White        1;37
NoColor      0


Покрасим нашу строку приглашения в зеленый цвет:
Код

PROMPT_COMMAND="date +%H:%M:%S"
PS1="\[\033[0;32m\]\u@\h: \[\033[0m\]"


Короче говоря, вид bash prompt целиком и полностью зависит от вашей фантазии.
Я пользуюсь таким bash prompt:

Код

ps_gen() {
   local DARK_GRAY="\[\033[1;30m\]"
   local RED="\[\033[0;31m\]"
   local NO_COLOR="\[\033[0m\]"
   
   local WD=$DARK_GRAY'[\w]'$NO_COLOR
   local USERNAME="\$(\
   if [ \$(whoami) != 'root' ]; \
   then echo -n '"$NO_COLOR"\u"$NO_COLOR"';\
   else echo -n '"$RED"\u"$NO_COLOR"';fi)"
   local MACHINE='\h'
   
   local PROMPT=$WD'\n['$USERNAME'@'$MACHINE']: '
   echo -n $PROMPT
}

Здесь всё просто: над строкой приглашения пишется текущий каталог, а внизу - имя пользователя и машины, причем если я - рут, то имя пользователя выделяется красным цветом.

Обычный пользователь:
Код

[~/docs]
[shmel@nirvana]:

А вот так под рутом:
Код

[~/docs]
[root@nirvana]:


Обязательно к прочтению:
man bash
Bash Prompt HOWTO
Автор: Шмель






Просмотров: 6427

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную