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

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@~.


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 ).


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.