Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как изменить строку приглашения (bash prompt) в терминале? 
:(
    Опции темы
Chuck
Дата 31.5.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: 3
Всего: 9



За вид строки приглашения отвечают переменные окружения 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 
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

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


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0782 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.