De acuerdo con esta publicación de StackOverflow , es posible tener una solicitud de color en KornShell. No he podido averiguar cómo hacer esto. Puedo usar el color:
echo -e "\033[34mLinux\033[00m"
da una salida azul "Linux", al igual que:
printf "\033[34mLinux\033[00m"
Sin embargo, cuando incorporo los códigos de escape en mi PS1
variable de solicitud, no se escapan. ¿Qué debo hacer para obtener un mensaje de color? Además de ser una especie de imbécil para los llamativos, encuentro que un indicador de color es útil al analizar visualmente la salida.
Necesita poner un carácter de escape literal en la
PS1
variable. Ksh88 y clones como pdksh y mksh (versiones anteriores) no tienen sintaxis literal para los caracteres de control, excepto a través de la funciónprint
integrada. Mksh entiende\e
por escape, pero pdksh requiere el código octal\033
.ATT ksh93 presenta la sintaxis literal con escape de reacción
$'…'
(también disponible en mksh desde R39b). Puede usar las barras invertidas para colocar caracteres de control en estos literales.fuente
mksh
también es compatible$'…'
, es cierto porque Dave Korn (el Korn en Korn Shell) insistió en que lo agregue.Los uso
mksh
para un usuarioshell
:y un poco diferente
shell
pararoot
:Como los caracteres especiales no se copiaron, aquí hay una pasta pastebin para el usuario normal y la raíz.
fuente
Están sucediendo varias cosas en las respuestas de las personas, cada una con una sintaxis diferente.
Las secuencias de escape para su programa de terminal que figuran en la documentación.
Cómo codificar las secuencias de escape de terminal en la variable PS1, por ejemplo \ e o escape literal. Esto depende de la cáscara.
Cómo agregar información cambiante a la solicitud, por ejemplo, el nombre de host, el directorio actual, etc. Esto también depende del shell. Es posible que pueda usar secuencias especiales de barra invertida como \ w para el directorio de trabajo, o puede que tenga que nombrar variables de entorno o incrustar líneas de comando en la cadena.
Cómo decirle al shell qué caracteres se imprimen y cuáles no. El shell no sabe dónde comienzan y terminan las secuencias de escape de su terminal. Si el shell tiene un editor de línea de comandos o algo similar, necesita saber qué caracteres se imprimen para saber dónde está el cursor. Sin este detalle, su mensaje podría verse bien, pero la edición puede comportarse de manera extraña.
En bash, pones \ [antes de cada secuencia de escape y \] después.
En ksh, elige un único carácter ASCII sin impresión que no puede aparecer en ningún otro lugar de la cadena. Al comienzo de la cadena, escribe ese carácter seguido de un retorno de carro ASCII. Luego escribes el mismo personaje antes y después de cada secuencia de escape. z3ntu eligió \ a como el carácter marcador.
fuente
Gracias a respuestas anteriores y otras fuentes, pude llegar a estas:
Indicador de shell Korn:
Aviso de bash:
Estos dan el mismo aviso de color (sí, hablo el inglés de Queen;)) en el formato:
El equivalente de DOS (aunque no hay opciones de color) es:
lo que da:
El ">" lo mantiene 'DOSsy' en lugar de 'nixy' con "$", pero si quisieras el sigilo ("$") en su lugar, sería:
Siempre que su cuenta de inicio de sesión tenga los permisos requeridos, para hacer que las 'nixies' sean permanentes, agréguelas con "exportar":
y cambia el DOSsy a:
o
fuente