PowerShell-Eingabeaufforderungen
Sie möchten die Aufforderung anpassen .
Die Standardaufforderung in PowerShell 3.0 und neuer lautet:
function prompt { "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) " }
Farbwechselsequenzen
Jetzt, 10 Windows - unterstützt den 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 gleichwertige Sequenz in PowerShell, Sie können stattdessen einen Ausdruck einbetten:"$([char]27)"
In PowerShell verwenden
Dies bedeutet, dass Sie beispielsweise die folgende Escape-Sequenz verwenden können, um die Hintergrundfarbe mit dem Code auf Cyan zu setzen 46
:
"$([char]27)[46m"
Was kann so verwendet werden:
echo "$([char]27)[46mColoured text"
Um die Dinge lesbarer zu machen, 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 Param-Liste und m
das Ende.
Verwenden Sie es in einem Befehl:
echo "$ESC[46mColoured text"
Um die ursprünglichen Farbeinstellungen wiederherzustellen, verwenden wir 0
stattdessen den Code :
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Fortgeschrittenere Farben
Wenn Sie mit der 16-Farben-Palette nicht zufrieden sind, können Sie mit dem Formular volle 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 entspricht dies alles direkt dem, was Sie in bash tun würden, außer Sie müssen $ESC
(nachdem Sie es definiert haben) anstelle von \e
oder verwenden \033
.
Festlegen einer farbigen Eingabeaufforderung
Zusammenfassend können wir die ANSI-Farb-Escape-Codes in einer modifizierten Aufforderung verwenden, um die Hintergrundfarbe zu ändern:
function prompt { $ESC = [char]27 "$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m" }
Beharrlichkeit
Wenn Sie möchten, dass dieser Vorgang über mehrere Sitzungen hinweg erhalten bleibt, fügen Sie ihn Ihrem Profil hinzu (z. B. .bashrc
). Sie können den Pfad zu Ihrem Profil in sehen $profile
.