Ich mache immer die Aufforderung, diese Farbe in meinem Linux zu haben. Dann kann ich meine Eingabe im schwarzen Befehlsfenster finden. Aber können wir die gleiche Farbe in meiner Powershell machen ?
Ich mache immer die Aufforderung, diese Farbe in meinem Linux zu haben. Dann kann ich meine Eingabe im schwarzen Befehlsfenster finden. Aber können wir die gleiche Farbe in meiner Powershell machen ?
Antworten:
Sie möchten die Eingabeaufforderung anpassen .
Die Standardeingabeaufforderung in PowerShell 3.0 und höher lautet:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Nun, Microsoft Windows 10 unterstützt der ANSI - Escape - Codes in seiner conhost und 24-Bit - Farbe ist seit 1703 unterstützt.
Um einen der ANSI-Escape-Codes zu verwenden, benötigen wir ein buchstäbliches ESC-Zeichen . Dies ist Oktal 033 oder Dezimal 27. In Bash würden Sie "\033"
oder verwenden "\e"
. Es gibt keine direkte äquivalente Sequenz in PowerShell, aber Sie können stattdessen einen Ausdruck einbetten:"$([char]27)"
In PowerShell Core können Sie "`e"
stattdessen die Escape-Sequenz verwenden. Danke an den Kommentar von asherber.
Dies bedeutet, dass Sie beispielsweise die folgende Escape-Sequenz verwenden können, um die Hintergrundfarbe mit dem Code auf Cyan festzulegen 46
:
"$([char]27)[46m"
Welches kann so verwendet werden:
echo "$([char]27)[46mColoured text"
Um die Lesbarkeit zu verbessern, definieren wir eine Variable:
$ESC = [char]27
So können wir verwenden:
"$ESC[46m"
Wo $ESC
ist das wörtliche ESC-Zeichen, [
definiert den Anfang der Parameterliste und m
das Ende.
Verwenden Sie es in einem Befehl:
echo "$ESC[46mColoured text"
Und um die ursprünglichen Farbeinstellungen wiederherzustellen, verwenden wir 0
stattdessen den Code :
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Wenn Sie mit der grundlegenden 16-Farben-Palette nicht zufrieden sind, können Sie mit dem folgenden Formular vollständige 24-Bit-Farben verwenden:
"$ESC[48;2;<r>;<g>;<b>m"
Wo <r>
ist der Dezimalwert für Rot von 0-255, <g>
für Grün und <b>
für Blau, z"$ESC[48;2;255;0;123m"
Weitere Informationen finden Sie in der Dokumentation .
Tatsächlich ist dies alles direkt äquivalent zu dem, was Sie in bash tun würden, außer dass Sie $ESC
(nachdem Sie es definiert haben) anstelle von \e
oder verwenden müssen \033
.
Zusammengenommen können wir die ANSI-Escape-Farbcodes in einer modifizierten Eingabeaufforderung verwenden, um die Hintergrundfarbe zu ändern:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Wenn Sie möchten, dass dies über mehrere Sitzungen hinweg so bleibt, fügen Sie es Ihrem Profil hinzu (wie .bashrc
). Sie können den Pfad zu Ihrem Profil in anzeigen $profile
.
1;37m
die gleiche 97m
Bedeutung haben wie "helles Weiß")
[char]27
. Ich bin nicht sicher, ob dies in früheren Versionen hinzugefügt wurde.