Siempre hago que mi mensaje sea de este color en mi linux. Luego puedo encontrar mi entrada en la ventana de comandos negra. ¿Pero podemos hacer el mismo color en mi Powershell ?
Siempre hago que mi mensaje sea de este color en mi linux. Luego puedo encontrar mi entrada en la ventana de comandos negra. ¿Pero podemos hacer el mismo color en mi Powershell ?
Respuestas:
Lo que desea hacer es personalizar la solicitud .
El indicador predeterminado en PowerShell 3.0 y versiones posteriores es:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Ahora, Windows 10 admite los códigos de escape ANSI en su host, y el color de 24 bits es compatible desde 1703.
Para usar uno de los códigos de escape ANSI, necesitamos un carácter ESC literal . Esto es octal 033, o decimal 27. En Bash, usaría "\033"
o "\e"
; No hay una secuencia equivalente directa en PowerShell, pero puede insertar una expresión:"$([char]27)"
En PowerShell Core puede usar la "`e"
secuencia de escape en su lugar. Gracias al comentario de asherber.
Esto significa que puede, por ejemplo, usar la siguiente secuencia de escape para establecer el color de fondo en cian con el código 46
:
"$([char]27)[46m"
Que se puede usar así:
echo "$([char]27)[46mColoured text"
Para hacer las cosas más legibles, definamos una variable:
$ESC = [char]27
Entonces podemos usar:
"$ESC[46m"
Donde $ESC
está el carácter ESC literal, [
define el inicio de la lista de parámetros y m
el final.
Usándolo en un comando:
echo "$ESC[46mColoured text"
Y para restaurar la configuración de color original, usamos el código en su 0
lugar:
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Si no está satisfecho con la paleta básica de 16 colores, puede usar colores completos de 24 bits con el formulario:
"$ESC[48;2;<r>;<g>;<b>m"
¿Dónde <r>
está el valor decimal para rojo de 0-255, <g>
para verde y <b>
para azul, por ejemplo?"$ESC[48;2;255;0;123m"
Consulte la documentación para obtener más información.
De hecho, todo esto es directamente equivalente a lo que harías en bash, excepto que debes usar $ESC
(después de haberlo definido) en lugar de \e
o \033
.
En conjunto, podemos usar los códigos de escape de color ANSI en una solicitud modificada para cambiar el color de fondo:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Si desea que esto persista en las sesiones, agréguelo a su perfil (como .bashrc
). Puede ver la ruta a su perfil en $profile
.
1;37m
es lo mismo 97m
, ambos significan "blanco brillante")
[char]27
. No estoy seguro de si esto se agregó en versiones anteriores.