Изменение вида приглашения командной строки

SUSE

Изменение вида приглашения командной строки

Сообщение Al Чт сен 17, 2009 5:22 pm

Найдено с помощью OpenSUSE Weekly News/88

Posted September 4th, 2009 by Joshua Price


Многие ли из нас думают о формате приглашения командной строки как о полезной вещи, или вообще обращают на промпт какое-то внимание? Для меня, однако, не секрет, что хорошо настроенное приглашение может вообще изменить Ваш стиль работы в консоли. Я прошерстил Веб в поисках лучших, более полезных или смешных приглашений, и вот что получилось.

Замечание. Для изменения вида приглашения в текущей сессии можно прямо задать вид командой:

Код: Выделить всё
export PS1=что-нибудь_хитрое


Для того, чтобы эти изменения присутствовали постоянно, поместите строку "PS1=что-нибудь_хитрое" в конец файла ~/.bashrc .

1. Счастливый смайл после успешного завершения команды

Вроде бы смешно, но на самом деле и полезно. Идея состоит в том, что до тех пор, пока команды завершаются успехом, в приглашении сияет счастливая рожица. В противном случае - наоборот.

Пример:

bashprompts-happyface.jpg
bashprompts-happyface.jpg (7.1 Кб) Просмотров: 6990



Чтобы закодить это поведение, задайте:

Код: Выделить всё
PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$ "



2. Поменять цвет для неудачного завершения команды

Моё любимое. Не только сигнализирует о коде возврата предыдущей команды, но и укорачивает длинные пути, и содержит номер команды из истории команд для простого воспроизведения с изменениями.

Пример:

bashprompts-hurring.jpg
bashprompts-hurring.jpg (11 Кб) Просмотров: 7023



Код:

Код: Выделить всё
PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'



3. Многострочное приглашение

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

Пример:

bashprompts-informant.jpg
bashprompts-informant.jpg (8.02 Кб) Просмотров: 6969



Код:

Код: Выделить всё
PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"
Al
 
Сообщения: 124
Зарегистрирован: Пн окт 22, 2007 9:41 pm

Re: Изменение вида приглашения командной строки, 2

Сообщение Al Чт сен 17, 2009 5:39 pm

4. Управление цветами приглашения

Полезный подход, если есть желание разделить визуально разные типы информации. Здесь представлены время, имя пользователя, имя хоста, текущий каталог. Всё разными цветами.

Пример:

bashprompts-4.jpg
bashprompts-4.jpg (6.17 Кб) Просмотров: 6922


Код:

Код: Выделить всё
PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "



5. Покажите мне полный путь

Кристалльно ясное минималистское, хотя и двухстрочное, приглашение. Имеем полный путь и имя пользователя внизу. Если есть желание избавиться от пустой строки перед каждым приглашением, просто надо удалить первый перевод строки “\n”.

Пример:

bashprompts-5.jpg
bashprompts-5.jpg (4.77 Кб) Просмотров: 7012


Код:

Код: Выделить всё
PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"



6. Покажите количество фоновых задач

Информация, которую мы еще не использовали. Первая строка - обычная конструкция user@host с полным путем к текущему каталогу. Во второй строке - номер команды в истории команд и количество задач, запущенных в фоне.

Пример:

bashprompts-61.jpg
bashprompts-61.jpg (9.51 Кб) Просмотров: 7014


Код:

Код: Выделить всё
PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '
Al
 
Сообщения: 124
Зарегистрирован: Пн окт 22, 2007 9:41 pm

Re: Изменение вида приглашения командной строки, 3

Сообщение Al Чт сен 17, 2009 5:48 pm

7. Отображение информации о каталоге

Весьма элегантный и неплохо смотрящийся дизайн промпта. Здесь у нас юзер/хост, количество задач, время/дата.
Ниже - текущий каталог, количество файлов в нем и использование дискового пространства.

Пример:

bashprompts-7.jpg
bashprompts-7.jpg (13.6 Кб) Просмотров: 6963


Код:

Код: Выделить всё
PS1="\n\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"



8. А это моё приглашение!

Модификация номера 7, занимает меньше места и содержит только то, что мне необходимо.
Используется две строки для отображения полного пути без уменьшения пространства на ввод команды.

Пример:

bashprompts-8.jpg
bashprompts-8.jpg (9.26 Кб) Просмотров: 6917


Код:

Код: Выделить всё
PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"


Делитесь своими находками в нелегком ремесле украшательства командной строки!

Ссыль на оригинальное сообщение:
http://maketecheasier.com/8-useful-and- ... 2009/09/04
Al
 
Сообщения: 124
Зарегистрирован: Пн окт 22, 2007 9:41 pm


Вернуться в SUSE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron