Zawsze podsuwam monit o bycie tym kolorem w moim
systemie Linux.
Następnie mogę znaleźć swoje wejście w czarnym oknie poleceń. Ale czy możemy zrobić ten sam kolor w mojej Powershell ?
Zawsze podsuwam monit o bycie tym kolorem w moim
systemie Linux.
Następnie mogę znaleźć swoje wejście w czarnym oknie poleceń. Ale czy możemy zrobić ten sam kolor w mojej Powershell ?
Odpowiedzi:
To, co chcesz zrobić, to dostosować monit .
Domyślny monit w programie PowerShell 3.0 i nowszym to:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Teraz, Windows 10 podpory te kody ucieczki ANSI w swojej conhost i 24-bitowa głębia kolorów jest obsługiwany od 1703 roku.
Aby użyć jednego z kodów ucieczkowych ANSI, potrzebujemy dosłownego znaku ESC . Jest to ósemkowa 033 lub dziesiętna 27. W Bash użyłbyś "\033"lub "\e"; W programie PowerShell nie ma bezpośredniej równoważnej sekwencji, ale zamiast tego można osadzić wyrażenie:"$([char]27)"
W PowerShell Core można "`e"zamiast tego użyć sekwencji ucieczki. Dzięki komentarzowi asherbera.
Oznacza to, że możesz na przykład użyć następującej sekwencji zmiany znaczenia, aby ustawić kolor tła na niebieskozielony za pomocą kodu 46:
"$([char]27)[46m"
Które można wykorzystać tak:
echo "$([char]27)[46mColoured text"
Aby wszystko było bardziej czytelne, zdefiniujmy zmienną:
$ESC = [char]27
Możemy więc użyć:
"$ESC[46m"
Gdzie $ESCjest dosłowny znak ESC, [określa początek listy parametrów i mkoniec.
Używanie go w poleceniu:
echo "$ESC[46mColoured text"
Aby przywrócić oryginalne ustawienia kolorów, 0zamiast tego używamy kodu :
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Jeśli nie jesteś zadowolony z podstawowej palety 16 kolorów, możesz użyć pełnych 24-bitowych kolorów za pomocą formularza:
"$ESC[48;2;<r>;<g>;<b>m"
Gdzie <r>jest wartość dziesiętna dla czerwonego z 0-255, <g>dla zielonego i <b>niebieskiego, np"$ESC[48;2;255;0;123m"
Więcej informacji znajduje się w dokumentacji .
W rzeczywistości jest to bezpośrednio równoważne z tym, co zrobiłbyś w bash, z wyjątkiem tego, że musisz użyć $ESC(po zdefiniowaniu) zamiast \elub \033.
Zestawiając je razem, możemy użyć kodów ucieczki kolorów ANSI w zmodyfikowanym monicie, aby zmienić kolor tła:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Jeśli chcesz, aby trwało to między sesjami, dodaj go do swojego profilu (np .bashrc.). Możesz wyświetlić ścieżkę do swojego profilu w $profile.
1;37mjest to to samo 97m, co oznacza „jasna biel”)
[char]27. Nie jestem pewien, czy zostało to dodane we wcześniejszych wersjach.