Como colorir o prompt do Powershell?

15

Eu sempre faço o meu prompt para ser dessa cor no meu linux Então eu posso encontrar minha entrada na janela de comando preta. Mas podemos fazer a mesma cor no meu Powershell ?

    
por yode 17.10.2017 / 16:05

1 resposta

26

oPowerShellsolicita

Oquevocêdesejafazerépersonalizaro prompt .

O prompt padrão no PowerShell 3.0 e mais recente é:

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

Sequências de escape de cores

Agora, o Windows 10 suporta os códigos de escape ANSI são conhecidos, e 24-bit color é suportado desde 1703.

Para usar um dos códigos de escape ANSI, precisamos de um caractere ESC literal. Este é o octal 033, ou decimal 27. No Bash, você usaria "3" ou "\e" ; Não há sequência equivalente direta no PowerShell, mas você pode incorporar uma expressão: "$([char]27)"

Use no PowerShell

Isso significa que você pode, por exemplo, usar a seguinte seqüência de escape para definir a cor do plano de fundo para ciano com o código 46 :

"$([char]27)[46m"

Que pode ser usado assim:

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

Para tornar as coisas mais legíveis, vamos definir uma variável:

$ESC = [char]27

Para que possamos usar:

"$ESC[46m"

Em que $ESC é o caractere ESC literal, [ define o início da lista de parâmetros e m o final.

Usando em um comando:

echo "$ESC[46mColoured text"

E para restaurar as configurações de cor originais, usamos o código 0 :

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

Cores mais avançadas

Se você não estiver satisfeito com a paleta básica de 16 cores, poderá usar cores completas de 24 bits com o seguinte formato:

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

Em que <r> é o valor decimal para vermelho de 0-255, <g> para verde e <b> para azul, por exemplo "$ESC[48;2;255;0;123m"

Consulte a documentação para mais informações.

Na verdade, isso tudo é diretamente equivalente ao que você faria no bash, exceto que você precisa usar $ESC (depois de ter definido) em vez de \e ou 3 .

Definindo um prompt colorido

Juntando tudo, podemos usar os códigos de escape de cor ANSI em um prompt modificado para alterar a cor do plano de fundo:

function prompt  
{  
    $ESC = [char]27
    "$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"  
}

Persistência

Se você quiser que isso persista nas sessões, adicione-o ao seu perfil (como .bashrc ). Você pode ver o caminho para o seu perfil em $profile .

    
por 17.10.2017 / 16:32