it-swarm-es.tech

cambiar el color del aviso según el usuario o la raíz en zsh

en zsh puedes tener un %# en tus PS1 (o cualquier variable Prompt) que básicamente significa mostrar % si el usuario o la pantalla # si root. Me pregunto si hay alguna forma de afectar esto para que el % o # cambia de color dependiendo de si es un usuario o root (un rojo para root, un azul para usuario) la forma obvia es simplemente cambiar el PS1 en mi raíz ~/.zshrc pero considerando que esto ya es un símbolo especial, me pregunto si tal vez no haya una manera en que pueda usar el mismo PS1 para ambos ... algo específico de %# como es para zsh (estoy seguro de que hay otros trucos que podría hacer también como una declaración if then).

13
xenoterracide

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

Eso debería funcionar para cambiar el nombre de host (%m) A un color diferente (rojo) si eres root. No tengo un shell zsh para probarlo, pero parece correcto.

Este es el por qué:

%(x.true.false) :: Basado en la evaluación del primer término del ternario, ejecute la instrucción correcta. '!' es cierto si el Shell tiene privilegios. De hecho, %# Es un atajo para %(!.#.%).

%{\e[1;31m%} %m %{\e[0m%} :: el %{\e[X;Ym%} Es la secuencia de escape de color con X como formato (negrita, subrayado, etc.) e Y como código de color. Tenga en cuenta que debe abrir y cerrar la secuencia alrededor del término que está buscando para cambiar el color; de lo contrario, todo después de ese punto será de cualquier color. Agregué espacios aquí alrededor del término Prompt %m Para mayor claridad.

http://www.nparikh.org/unix/Prompt.php tiene más opciones y detalles sobre las tablas de colores y otras opciones disponibles para zsh.

8
nzwulfin