Eu sempre solicito que seja desta cor no meu linux. Então, encontro minha entrada na janela de comando preta. Mas podemos fazer a mesma cor no meu PowerShell ?
Eu sempre solicito que seja desta cor no meu linux. Então, encontro minha entrada na janela de comando preta. Mas podemos fazer a mesma cor no meu PowerShell ?
Respostas:
O que você deseja fazer é personalizar o prompt .
O prompt padrão no PowerShell 3.0 e mais recente é:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Agora, o Windows 10 suporta os códigos de escape ANSI em seu estado conhecido e as cores de 24 bits são suportadas desde 1703.
Para usar um dos códigos de escape ANSI, precisamos de um caractere ESC literal . Este é octal 033 ou decimal 27. No Bash, você usaria "\033"
or "\e"
; Não há sequência equivalente direta no PowerShell, mas você pode incorporar uma expressão:"$([char]27)"
No PowerShell Core, você pode usar a "`e"
sequência de escape. Graças ao comentário de asherber.
Isso significa que você pode, por exemplo, usar a seguinte seqüência de escape para definir a cor do plano de fundo como 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"
Onde $ESC
está o caractere ESC literal, [
define o início da lista de parâmetros e m
o final.
Utilizando-o em um comando:
echo "$ESC[46mColoured text"
E para restaurar as configurações de cores originais, usamos o código 0
:
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
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"
Onde <r>
é o valor decimal para vermelho de 0 a 255, <g>
para verde e<b>
azul, por exemplo"$ESC[48;2;255;0;123m"
Por favor, consulte o documentação para mais informações.
De fato, tudo isso é diretamente equivalente ao que você faria no bash, exceto que você precisa usar $ESC
(depois de defini-lo) em vez de \e
ou\033
.
Juntando tudo isso, podemos usar os códigos de escape de cores ANSI em um prompt modificado para alterar a cor de fundo:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Se você deseja que isso persista nas sessões, adicione-o ao seu perfil (como .bashrc
). Você pode ver o caminho para o seu perfil $profile
.
1;37m
é o mesmo que 97m
, ambas significando "branco brilhante")
[char]27
. Não tenho certeza se isso foi adicionado em versões anteriores.