Windows-Äquivalente „Farbe A“ und „Farbe B“ im Bash-Terminal

Windows-Äquivalente „Farbe A“ und „Farbe B“ im Bash-Terminal

Unter Windows kann ich einfach „ color aoder“ oder color b„oder color c“ usw. eingeben, um die Schriftfarbe im Terminal vorübergehend zu ändern.

Gibt es im Bash-Terminal einen Befehl, um dies zu tun?

Ich möchte keine dauerhaften Änderungen vornehmen, es reicht, wenn die Sitzung erst einmal offen ist.

Antwort1

Sie beziehen sich auf eineBefehldas Werte von 0-f erwartet (also 0 bis 15 Dezimalstellen). Der analoge Befehl würde verwendentput:

tput setaf 10

("a" ist hexadezimal für 10), für dieVordergrundFarbe und

tput setab 10

für dieHintergrundFarbe. Das sind separateTermininfoFähigkeiten.

Dieses Beispiel geht davon aus, dass Ihre Terminalbeschreibung mindestens 16 Farben hat. Wenn es nur 8 sind, tputwerden Sie das nicht bemerken, aber das Ergebnis wird unbefriedigend sein. Sie können dies sehen, indem Sie

tput colors

Standardmäßig tputwird der aktuelle Wert von verwendet, $TERMum eine Terminalbeschreibung auszuwählen. Sie können dies mit der -TOption überschreiben. Wenn Sie beispielsweisexterm(Im Gegensatz zu einem anderen Terminal, das TERMauf „xterm“ eingestellt ist), können Sie die xterm-16colorTerminalbeschreibung wie in diesem Screenshot verwenden:

Bildbeschreibung hier eingeben

(Sie können wahrscheinlich sehen, dass die tputZeile 15 keinen nützlichen Effekt hatte, was zu erwarten ist, da10liegt außerhalb des Bereichs von 8 Farben).

Die Terminalbeschreibung, obxtermoderxterm-16color(oderxterm-256color) erklärt tput, wie man eine Escape-Sequenz erstellt, die in das Terminal geschrieben werden kann. Ihre Bash-Eingabeaufforderung kann ebenfalls Escape-Sequenzen senden, um Farben festzulegen oder zurückzusetzen. Wenn Sie tputText in einem Shell-Skript aufgerufen und wiedergegeben haben, sehen Sie möglicherweise den farbigen Text, während sich dieselben Befehle (getrennt durch Bash-Eingabeaufforderungen) möglicherweise nicht auf dieselbe Weise verhalten. Außerdem können einige Programme (wie ls) Farben festlegen/zurücksetzen. Es gibt nur den Farbstatus eines Terminals, der mit diesen verschiedenen Anwendungen geteilt werden kann; Terminals wechseln nicht automatisch zwischen ihnen.

Das Testen eines Shell-Skripts ist vorhersehbarer, als sich auf die Details Ihrer Shell-Eingabeaufforderung zu verlassen. Hier ist ein Beispiel

#!/bin/sh
case $TERM in
xterm*)
        TERM=xterm-256color
        ;;
linux*)
        TERM=linux-16color
        ;;
esac
export TERM
for p in $(seq 0 15)
do
        tput setab $p
        for q in $(seq 0 15)
        do
                tput setaf $q
                printf '%x%x' $p $q
        done
        tput sgr0
        printf '\n'
done

und ein Screenshot in xterm:

Bildbeschreibung hier eingeben

verwandte Informationen