Je fais toujours mon invite à être de cette couleur dans mon linux Ensuite, je peux trouver mon entrée dans la fenêtre de commande noire. Mais pouvons-nous faire la même couleur dans ma Powershell ?
Je fais toujours mon invite à être de cette couleur dans mon linux Ensuite, je peux trouver mon entrée dans la fenêtre de commande noire. Mais pouvons-nous faire la même couleur dans ma Powershell ?
Réponses:
Ce que vous voulez faire, c'est personnaliser l' invite .
L'invite par défaut dans PowerShell 3.0 et versions ultérieures est:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Maintenant, Windows 10 prend en charge les codes d'échappement ANSI dans son conhost, et la couleur 24 bits est prise en charge depuis 1703.
Pour utiliser l'un des codes d'échappement ANSI, nous avons besoin d'un caractère ESC littéral . Il s'agit de l'octal 033 ou du nombre décimal 27. Dans Bash, vous utiliseriez "\033"
ou "\e"
; Il n'y a pas de séquence équivalente directe dans PowerShell mais vous pouvez à la place incorporer une expression:"$([char]27)"
Dans PowerShell Core, vous pouvez utiliser la "`e"
séquence d'échappement à la place. Merci au commentaire de asherber.
Cela signifie que vous pouvez, par exemple, utiliser la séquence d'échappement suivante pour définir la couleur d'arrière-plan sur cyan avec le code 46
:
"$([char]27)[46m"
Qui peut être utilisé comme ceci:
echo "$([char]27)[46mColoured text"
Pour rendre les choses plus lisibles, définissons une variable:
$ESC = [char]27
Nous pouvons donc utiliser:
"$ESC[46m"
Où $ESC
est le caractère ESC littéral, [
définit le début de la liste des paramètres etm
la fin.
L'utiliser dans une commande:
echo "$ESC[46mColoured text"
Et pour restaurer les paramètres de couleur d'origine, nous utilisons 0
plutôt le code :
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Si vous n'êtes pas satisfait de la palette de base de 16 couleurs, vous pouvez utiliser des couleurs 24 bits complètes avec le formulaire:
"$ESC[48;2;<r>;<g>;<b>m"
Où <r>
est la valeur décimale pour le rouge de 0 à 255, <g>
pour le vert et <b>
pour le bleu, par exemple"$ESC[48;2;255;0;123m"
Veuillez vous référer à la documentation pour plus d'informations.
En fait, tout cela est directement équivalent à ce que vous feriez en bash, sauf que vous devez utiliser $ESC
(après l'avoir défini) au lieu de \e
ou \033
.
En les regroupant, nous pouvons utiliser les codes d'échappement de couleur ANSI dans une invite modifiée pour changer la couleur d'arrière-plan:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Si vous souhaitez que cela persiste entre les sessions, ajoutez-le à votre profil (comme .bashrc
). Vous pouvez afficher le chemin d'accès à votre profil dans $profile
.
1;37m
c'est la même chose 97m
, les deux signifiant "blanc brillant")
[char]27
. Je ne sais pas si cela a été ajouté dans les versions antérieures.