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

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

Есть идеи?

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

пример

2 ответа

Решение

Потратив около получаса на изучение кода 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@~,

Похоже, что смайлик, показанный выше, является символом юникода 0x263a, Поэтому вам понадобится терминал с поддержкой юникода (не уверен, что терминал.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 (он разместил это здесь).

Другие вопросы по тегам