Wie können Sie Ihre Terminal-Bash-Eingabeaufforderung mit Smileys anpassen?

11

Ich versuche herauszufinden, wie ich die Bash-Eingabeaufforderung meines Terminals anpassen kann, um Smileys zu verwenden. Was ich möchte (wie im Beispiel Schlag zu sehen), ist, dass der CWD durch ein \ n von der Eingabeaufforderung getrennt wird und ein grünes Smiley-Gesicht zeigt, wenn der Befehl erfolgreich war, und ein rotes trauriges Gesicht, wenn es fehlschlug.

Irgendwelche Ideen?

Dies wurde von einem Peepcode-Screencast inspiriert.

Beispiel

Josh Smith
quelle

Antworten:

15

Nachdem ich ungefähr eine halbe Stunde damit verbracht hatte, mit Andhrimnirs Code herumzuspielen und weitere Nachforschungen anzustellen, bekam ich endlich das, was ich wollte.

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

Sie können einen finden Liste der Smilies hier und dann konvertieren Sie sie in den 3-stellige Byte - Code Sie nach den Newline - Zeichen zu sehen.

Um das zu bekommen cwd, musste ich nur benutzen \w. Sie können auch den aktuellen Benutzer anzeigen \u@\w, indem Sie etwas tun , das so etwas wie ausgeben würde joshsmith@~.

Josh Smith
quelle
6

Es scheint, dass das oben gezeigte Smiley-Gesicht ein Unicode-Zeichen ist 0x263a. Sie benötigen also ein Unicode-fähiges Terminal (Ich bin mir nicht sicher, ob terminal.app dies unterstützt, aber ich kann mir vorstellen, dass dies der Fall ist).

Hier ist ein Beispielcode, der ein grünes Smiley-Gesicht für Rückkehrcodes von 0 und ansonsten rote Stirnrunzeln druckt.

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

Das Guthaben geht an Fingel in den Arch-Foren (er hat es hier gepostet ).

jake-low
quelle
Tolle Arbeit an der If / Then-Probe. Ich bin gespannt, wie man die Newline macht, die entfernt $, das Unicode-Symbol tatsächlich verwendet und es vollständig anzeigen lässt cwd.
Josh Smith
... und eine Stunde später meine eigene Frage beantwortet (danke!).
Josh Smith
1
Froh, dass ich helfen konnte! Es gibt viele Informationen im Thread unter dem Link, den ich oben gepostet habe, wenn Sie tiefer in benutzerdefinierte $PS1Dinge eintauchen möchten .
Jake-Low
Ja, die Hälfte meiner Forschung begann an diesem Thread. Super hilfreich. Für alle, die mehr über die Befehlszeile erfahren möchten, bietet Peepcode einen großartigen erweiterten Screencast.
Josh Smith