Ho sempre richiesto di essere di questo colore nel mio Linux. Poi posso trovare il mio input nella finestra di comando nera. Ma possiamo fare lo stesso colore nel mio Powershell ?
Ho sempre richiesto di essere di questo colore nel mio Linux. Poi posso trovare il mio input nella finestra di comando nera. Ma possiamo fare lo stesso colore nel mio Powershell ?
Risposte:
Quello che vuoi fare è personalizzare il prompt .
Il prompt predefinito in PowerShell 3.0 e versioni successive è:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Ora, Windows 10 supporta i codici di escape ANSI nel suo conhost e il colore a 24 bit è supportato dal 1703.
Per utilizzare uno dei codici di escape ANSI, è necessario un carattere ESC letterale . Questo è 033 ottale, o 27 decimale. In Bash, useresti "\033"
o "\e"
; Non esiste una sequenza equivalente diretta in PowerShell ma puoi invece incorporare un'espressione:"$([char]27)"
In PowerShell Core è invece possibile utilizzare la "`e"
sequenza di escape. Grazie al commento di asherber.
Ciò significa che è possibile, ad esempio, utilizzare la seguente sequenza di escape per impostare il colore di sfondo su ciano con il codice 46
:
"$([char]27)[46m"
Quale può essere usato così:
echo "$([char]27)[46mColoured text"
Per rendere le cose più leggibili, definiamo una variabile:
$ESC = [char]27
Quindi possiamo usare:
"$ESC[46m"
Dov'è $ESC
il carattere letterale ESC, [
definisce l'inizio dell'elenco dei parametri e m
la fine.
Usandolo in un comando:
echo "$ESC[46mColoured text"
E per ripristinare le impostazioni di colore originali, utilizziamo 0
invece il codice :
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Se non sei soddisfatto della tavolozza base a 16 colori, puoi utilizzare i colori a 24 bit con il modulo:
"$ESC[48;2;<r>;<g>;<b>m"
Dove si <r>
trova il valore decimale per il rosso da 0 a 255, <g>
per il verde e <b>
per il blu, ad es"$ESC[48;2;255;0;123m"
Per ulteriori informazioni, consultare la documentazione .
In realtà, questo è direttamente equivalente a quello che faresti in bash, tranne che devi usare $ESC
(dopo averlo definito) invece di \e
o \033
.
Mettendo insieme questi, possiamo usare i codici di escape del colore ANSI in un prompt modificato per cambiare il colore di sfondo:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Se vuoi che questo persista per tutte le sessioni, aggiungilo al tuo profilo (come .bashrc
). Puoi visualizzare il percorso del tuo profilo in $profile
.
1;37m
è lo stesso di 97m
entrambi, che significano entrambi "bianco brillante")
[char]27
. Non sono sicuro che sia stato aggiunto nelle versioni precedenti.