web-dev-qa-db-fra.com

Comment colorer l'invite de Powershell?

Je fais toujours mon invite à être 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 mon Powershell ?

16
yode

screenshot of coloured Prompt

Invites PowerShell

Ce que vous voulez faire est de personnaliser l’invite .

L'invite par défaut dans PowerShell 3.0 et plus récent est:

function Prompt  
{  
    "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "  
}

Séquences d'échappement couleur

Désormais, Windows 10 prend en charge les codes d’échappement ANSI de son hôte, et La couleur 24 bits est supportée depuis 1703.

Pour utiliser l'un des codes d'échappement ANSI, nous avons besoin d'un caractère ESC littéral . C'est l'octal 033, ou le 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)"


Utiliser dans PowerShell

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 suit:

echo "$([char]27)[46mColoured text"

Pour rendre les choses plus lisibles, définissons une variable:

$ESC = [char]27

Nous pouvons donc utiliser:

"$ESC[46m"

$ESC est le caractère ESC littéral, [ définit le début de la liste de paramètres et m la fin.

En l'utilisant dans une commande:

echo "$ESC[46mColoured text"

Et pour restaurer les paramètres de couleur d'origine, nous utilisons plutôt le code 0:

echo "$ESC[46mColoured text$ESC[0mUncoloured text"

Couleurs plus avancées

Si vous n'êtes pas satisfait de la palette 16 couleurs de base, vous pouvez utiliser des couleurs 24 bits complètes avec le formulaire:

"$ESC[48;2;<r>;<g>;<b>m"

<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 dans bash, sauf que vous devez utiliser $ESC (après l'avoir défini) au lieu de \e ou \033.


Définir une invite de couleur

En les combinant, 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"  
}

Persistance

Si vous souhaitez que cela persiste d'une session à l'autre, ajoutez-le à votre profil (par exemple, .bashrc). Vous pouvez afficher le chemin d'accès à votre profil dans $profile.

29
Bob