wake-up-neo.com

Wie färbe ich die Powershell-Eingabeaufforderung ein?

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?

16
yode

screenshot of coloured Prompt

PowerShell-Eingabeaufforderungen

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)) "  
}

Farbfluchtsequenzen

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)"


In PowerShell verwenden

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"

Fortgeschrittenere Farben

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.


Festlegen einer farbigen Eingabeaufforderung

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"  
}

Beharrlichkeit

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.

29
Bob