Стандартное приглашение в моей системе выглядело так:
PS1="[\u@\h \W]\$ "
Наиболее близкой частью этой конструкции, является вот эта часть кода:
"\n⌎ ${debian_chroot:+($debian_chroot)}\[\e[01;32m\]\!\[\e[01;34m\] \$\[\e[00m\] "
\n — символ перевода строки.
"⌎ " — это просто два символа "⌎" и пробел.
-
\[ —
\e[01;32m — \033[1;32m — активируем стиль: жирный зелёный
\] —
\e[01;34m — \033[1;34m — активируем стиль: жирный синий
\] —
\! — номер текущей команды
\] —
" \$" — это пробел и $
\[ —
\e[00m — \033[0m — сброс текущего стиля к изначальному
\] —
" " — пробел
Вообще, конструкции "\["
и "\]"
тут что-то вроде визуальной обёртки. Не помню, зачем их вставил. Если их убрать, будет:
"\n⌎ ${debian_chroot:+($debian_chroot)}\e[01;32m\!\e[01;34m \$\e[00m "
Помимо этого, мною добавлены были лишние символы 0, до двухсимвольных конструкций. Их тоже можно убрать.
"\n⌎ ${debian_chroot:+($debian_chroot)}\e[1;32m\!\e[1;34m \$\e[0m "
Лично мне, такую конструкцию воспринимать сложнее.
Ещё можно поменять \e на \033
"\n⌎ ${debian_chroot:+($debian_chroot)}\033[1;32m\!\033[1;34m \$\033[0m "
Это - рабочая конструкция:
PS1="\n⌎ ${debian_chroot:+($debian_chroot)}\033[1;32m\!\033[1;34m \$\033[0m "
Можно попробовать ввести её в консоль.
Конструкция:
"\`if [ \$? = 0 ]; then echo … ; else echo … ; fi\`"
Позволяет отследить успешное выполнение команды или возврат ошибки.
Именно вот эту конструкцию из статьи:
"PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$ "
я вроде бы брал за основу.
Строки:
echo \[\e[33m\]\t\[\e[00m\] \[\e[01\;32m\]\(^_^\)\[\e[00m\] \[\e[32m\]\u\[\e[33m\]@\[\e[32m\]\h\[\e[00m\];
и
echo \[\e[31m\]\t\[\e[00m\] \[\e[01\;41m\]\(O_o\)\[\e[00m\] \[\e[33m\]\u\[\e[31m\]@\[\e[33m\]\h\[\e[00m\];
повторяют друг-друга по конструкции, но отличаются деталями. ; приходится экранировать из-за конструкции if.
\e[33m — активируем стиль: жёлтый
\e[31m — активируем стиль: красный
\t — время
\e[00m — сброс стиля
" " — пробел
\e[01\;32m — \033[1;32m — активируем стиль: жирный зелёный
\e[01\;41m — \033[1;41m — активируем стиль: жирный и красный фон
"\(^_^\)\"
— довольная рожица
"\(O_o\)\"
— удивлённая рожица
\e[00m — \033[0m — сброс стиля
" " — пробел
\e[32m — \033[32m — активируем стиль: зелёный
\e[33m — \033[33m — активируем стиль: жёлтый
\u — логин пользователя
\e[33m — \033[33m — активируем стиль: жёлтый
\e[31m — \033[31m — активируем стиль: красный
@ — "@"
\e[32m — \033[32m — активируем стиль: зелёный
\e[33m — \033[33m — активируем стиль: жёлтый
\h — имя хоста
\e[00m — \033[0m — сброс стиля
Остался вот этот кусочек:
[\e[01;34m\] [ \w ]\[\e[00m\]
\e[01\;34m — \033[1;34m — активируем стиль: жирный синий
" [ " — " [ " \w — рабочий каталог/дирректория/папка
" ] " — " ] "
\e[00m — \033[0m — сброс стиля
Теперь, по прошествии времени и ещё раз разобравшись со всем заново, я могу всё переписать в стиле статьи, убрав лишнее.
Было:
.bashrc
PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]\t\[\e[00m\] \[\e[01\;32m\]\(^_^\)\[\e[00m\] \[\e[32m\]\u\[\e[33m\]@\[\e[32m\]\h\[\e[00m\]; else echo \[\e[31m\]\t\[\e[00m\] \[\e[01\;41m\]\(O_o\)\[\e[00m\] \[\e[33m\]\u\[\e[31m\]@\[\e[33m\]\h\[\e[00m\]; fi\`\[\e[01;34m\] [ \w ]\[\e[00m\]\n⌎ ${debian_chroot:+($debian_chroot)}\[\e[01;32m\]\!\[\e[01;34m\] \$\[\e[00m\] "
Стало:
.bashrc
PS1="\`if [ \$? = 0 ]; then echo \e[33m\t\e[0m \e[1\;32m\(^_^\)\e[0m \e[32m\u\e[33m@\e[32m\h\e[0m; else echo \e[31m\t\e[0m \e[1\;41m\(O_o\)\e[0m \e[33m\u\e[31m@\e[33m\h\e[0m; fi\`\e[1;34m [ \w ]\e[0m\n⌎ ${debian_chroot:+($debian_chroot)}\e[1;32m\!\e[1;34m \$\e[0m "
Если заменить "\e" на "\033", то получится ближе к тексту статьи:
.bashrc
PS1="\`if [ \$? = 0 ]; then echo \033[33m\t\033[0m \033[01\;32m\(^_^\)\033[0m \033[32m\u\033[33m@\033[32m\h\033[0m; else echo \033[31m\t\033[0m \033[1\;41m\(O_o\)\033[0m \033[33m\u\033[31m@\033[33m\h\033[0m; fi\`\033[1;34m [ \w ]\033[0m\n⌎ ${debian_chroot:+($debian_chroot)}\033[1;32m\!\033[1;34m \$\033[0m "
И оно вроде как даже работает, но «глючит» при навигации по истории, например. В отличие от изначальной конструкции. Может, конструкции "\["
и "\]"
были нужны или что-то лишнее удалил случайно, когда переписывал. Искать проблему сейчас — лень, но думаю, смысл я объяснил. Сам предпочту пользоваться старой конструкцией, проверенной мною же.