Как вы можете настроить приглашение терминала в терминале со смайликами?

11

Я пытаюсь выяснить, как я могу настроить приглашение bash моего терминала для использования смайликов. Что я хочу (как видно из примера удара), так это чтобы cwd был отделен от приглашения символом \ n и показал зеленое улыбающееся лицо, если команда выполнена успешно, и красное печальное лицо, если оно не удалось.

Есть идеи?

Это было вдохновлено скринкастом Peepcode.

пример

Джош Смит
источник

Ответы:

15

Потратив около получаса на изучение кода andhrimnir и дальнейших исследований, я наконец-то получил то, что хотел.

PS1="\w \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]\n\xE2\x98\xBA'; else echo -e '\[\e[01;31m\]\n\xE2\x98\xB9'; fi\` \[\e[01;34m\]\[\e[00m\]"

Вы можете найти список смайликов здесь и затем преобразовать их в трехзначный байт-код, который вы видите после символа новой строки.

Чтобы получить cwdвсе, что мне нужно было сделать, это использовать \w. Вы также можете показать текущего пользователя, выполнив \u@\wчто-то вроде joshsmith@~.

Джош Смит
источник
6

Похоже, что смайлик, показанный выше, является символом юникода 0x263a. Так что вам понадобится терминал с поддержкой Unicode (не уверен, поддерживает ли терминал.app это, я думаю, что это так).

Вот пример кода, который печатает зеленое улыбающееся лицо для кодов возврата 0 и красные морщинистые лица в противном случае.

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"

Кредит идет на Фингеля на форумах Arch (он разместил это здесь ).

Jake низкой
источник
Потрясающая работа над образцом if / then. Мне любопытно, как сделать новую строку, удалить, на $самом деле использовать символ Unicode и заставить его показывать полностью cwd.
Джош Смит
... и через час ответил на мой собственный вопрос (спасибо вам!).
Джош Смит
1
Рад, что смог помочь! Там есть много информации в ветке по ссылке, которую я разместил выше, если вы хотите углубиться в пользовательские $PS1вещи.
Джейк Лоу
Да, половина моих исследований началась с этой темы. Супер полезно. Кроме того, для тех, кто хочет углубиться в командную строку, в Peepcode есть отличный расширенный скринкаст.
Джош Смит