Ich mache immer meine Aufforderung, diese Farbe in meinem Linux zu sein Dann kann ich meine Eingabe im schwarzen Befehlsfenster finden. Aber können wir die gleiche Farbe in meinem Powershell machen?
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)) "
}
Windows 10 unterstützt die ANSI-Escape-Codes in seinem Conhost und 24-Bit-Farben werden seit 1703 unterstützt.
Um einen der ANSI-Escape-Codes zu verwenden, benötigen wir ein Literal ESC-Zeichen . Dies ist Oktal 033 oder Dezimal 27. In Bash würden Sie "\033"
oder "\e"
verwenden. Es gibt keine direkte äquivalente Sequenz in PowerShell, aber Sie können stattdessen einen Ausdruck einbetten: "$([char]27)"
Dies bedeutet, dass Sie zum Beispiel die folgende Escape-Sequenz verwenden können, um die Hintergrundfarbe mit dem Code 46
auf Cyan zu setzen:
"$([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
das wörtliche ESC-Zeichen ist, 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 stattdessen den Code 0
:
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"
Wobei <r>
der Dezimalwert für Rot von 0 bis 255 ist, <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 direkt dem, was Sie in bash tun würden, außer dass Sie $ESC
(nachdem Sie es definiert haben) anstelle von \e
oder \033
verwenden müssen.
Zusammengenommen können wir die ANSI-Escape-Codes 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 beibehalten wird, fügen Sie es Ihrem Profil hinzu (z. B. .bashrc
). Sie können den Pfad zu Ihrem Profil in $profile
anzeigen.