So legen Sie für jedes neu geöffnete Terminal eine andere Shell-Eingabeaufforderungsfarbe fest

So legen Sie für jedes neu geöffnete Terminal eine andere Shell-Eingabeaufforderungsfarbe fest

Ich verwende Ubuntu und kann die bashFarbe der Shell-Eingabeaufforderung manuell ändern inGrünmit

export PS1="\e[0;32m[\u@\h \W]\$ \e[m"

Ich möchte jedoch, dass sich die Farbe der Shell-Eingabeaufforderung automatisch ändert, wenn ich ein neues Terminal oder eine neue Registerkarte öffne. Mir ist bewusst, dass das grundlegende TTY-TERM 16 Farben hat, und es ist in Ordnung, die Farben zu wechseln, wenn mehr als 16 Terminals geöffnet sind. Funktioniert die Lösung auch, wenn ich eine Verbindung über oder Puttyherstelle ?tmuxscreen

Meine Idee ist, ein Skript zu schreiben shellund darin zu platzieren, .bashrcdas die neue Terminalsitzung erkennt, die der Benutzer geöffnet hat, und einen globalen Zähler von \e[0;31m[auf erhöht \e[0;47m[. Wie erkennt man die Anzahl der vom Benutzer geöffneten Terminals?

Antwort1

Das Zählen der Terminals (Bsp.: who - a | grep user | wc -l) funktioniert nicht: Wenn eine oder mehrere Shells geschlossen werden, verringert sich die Gesamtzahl und das neue Terminal stimmt möglicherweise mit einem anderen, bereits geöffneten Terminal überein.

Sie sollten einfach einen Zähler haben:

Wenn Sie insgesamt 6 Farben möchten:

touch ~/.colornumber
new=$(awk '(NR==1) { print ($1 + 1) % 6; }' ~/.colornumber)
echo $new > ~/.colornumber
#and use color number $new for your current terminal, for example defined in an array of 6 entries. 
 # just note here that color 0 is for the 6th terminal, not the first... or change the awk above

verwandte Informationen