W jaki sposób możesz dostosować monit terminala za pomocą uśmiechniętych twarzy?

11

Próbuję wymyślić, w jaki sposób mogę dostosować monit bash mojego terminalu, aby używał buźek. To, czego chcę (jak widać w przykładzie ciosu), to oddzielenie cwd od znaku zachęty \ n i wyświetlenie zielonej uśmiechniętej twarzy, jeśli polecenie się powiedzie, i czerwonej smutnej, jeśli się nie powiedzie.

Jakieś pomysły?

Zostało to zainspirowane screencastem Peepcode.

Przykład

Josh Smith
źródło

Odpowiedzi:

15

Po spędzeniu około pół godziny zabawy z kodem andhrimnira i przeprowadzeniu dalszych badań, w końcu dostałem to, czego chciałem.

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\]"

Tutaj możesz znaleźć listę emotikonów, a następnie przekonwertować je na 3-cyfrowy kod bajtowy widoczny po znaku nowej linii.

Aby uzyskać cwd, wszystko, co musiałem zrobić, to użyć \w. Możesz również wyświetlić bieżącego użytkownika, wykonując polecenie \u@\w, które wygeneruje coś w rodzaju joshsmith@~.

Josh Smith
źródło
6

Wygląda na to, że pokazana powyżej uśmiechnięta buźka ma postać Unicode 0x263a. Będziesz więc potrzebował terminala obsługującego Unicode (Nie jestem pewien, czy terminal.app to obsługuje, ale chyba tak.)

Oto przykładowy kod, który drukuje zieloną buźkę dla kodów powrotu 0 i czerwone zmarszczone twarze w przeciwnym razie.

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\]"

Podziękowania należą się Fingelowi na forach Arch (opublikował to tutaj ).

jake-low
źródło
Niesamowita praca na próbce if / then. Jestem ciekawy, jak zrobić nową linię, usunąć $, faktycznie użyć symbolu Unicode i sprawić, by był pełny cwd.
Josh Smith
... a godzinę później odpowiedziałem na moje pytanie (dzięki tobie!).
Josh Smith
1
Cieszę się, że mogłem pomóc! W wątku pod linkiem, który zamieściłem powyżej, jest dużo informacji, jeśli chcesz zagłębić się w niestandardowe $PS1rzeczy.
jake-low
Tak, połowa moich badań rozpoczęła się od tego wątku. Super pomocny. Ponadto, dla każdego, kto chce zagłębić się w wierszu poleceń, Peepcode ma świetny zaawansowany screencast.
Josh Smith