Estoy tratando de configurar PS1 de la siguiente manera.
Verde = "\ [\ e [32; 1m \]" Rojo = "\ e [0; 31m" Púrpura = "\ e [0; 35m" STARTCOLOR = "\ [\ e [40m \]" ENDCOLOR = "\ [\ e [0m \]" export PS1 = "$ STARTCOLOR $ Green \ u @ $ Purple \ h $ Red \ w $ Green> $ ENDCOLOR"
Y tengo algunas preguntas.
- ¿Cuál es la diferencia entre "[\ e [32; 1m]" y \ e [32; 1m "? ¿Son lo mismo?
- Después de ejecutar el comando 'exportar PS1', funciona bien, pero cuando doy la entrada de unos 20 caracteres, los caracteres se sobrescriben a medida que los adjunto. ¿Qué tiene de malo esto?
- ¿Cuál es el significado de STARTCOLOR (\ e [40m) / ENDCOLOR (\ e [0m)?
http://a.imageshack.us/img8/606/resultqm.jpg
ADICIONAL
Después de algunas pruebas, obtuve el siguiente cambio que podría resolver el problema. Es decir, el formato "\ e" debe reemplazarse por el formato "\ [\ e".
Rojo = "\\ e [1; 31m" - no funciona Rojo = "\ [\ e [1; 31m \]" - trabajando
\$
para cambiar automáticamente entre indicación raíz y no raíz.Del manual de bash:
\[
y\]
no se pasan a la terminal. Le dicen a bash que los caracteres entre ellos no se imprimirán. Sin ellos, bash no podría saber que la secuencia que sigue al carácter de escape (e, g.[32;1m
) No ocupa ningún espacio en la pantalla, lo que explica por qué no calculó correctamente la longitud de la solicitud cuando los omitió.Tenga en cuenta que no ha sido muy consistente en su pregunta (o tal vez es solo un error con Markdown); debe tener una secuencia literal de barra diagonal inversa
$PS1
, no solo una llave (que se mostrará literalmente).Las secuencias de escape que comienzan con
\e
son interpretadas por el emulador de terminal. Están documentados en el documento de secuencias de control Xterm (ctlseqs) (otros emuladores de terminal tienden a ser en su mayoría compatibles). Por ejemplo,\e[32;1m
cambia a primer plano en negrita y verde;\e[40m
cambia el color de fondo a negro;\e[0m
restaura los atributos predeterminados.fuente
La mayoría de los emuladores de terminal modernos pueden usar códigos de escape ANSI para controlar varios aspectos de la pantalla.
La mayoría de los códigos ANSI comienzan con el código de 2 caracteres ESC- [Ese es el carácter de escape (ASCII decimal 27) seguido del carácter de corchete abierto. Esta secuencia también se conoce como CSI o iniciador de secuencia de control.
Debido a que el carácter de escape no es uno, puede escribir directamente (la tecla Esc tiene otros usos, a menudo específicos de la aplicación) bash usa '\ e' para referirse a él.
Cambiar el color del texto utiliza el comando ANSI Set Graphics Mode:
donde
<value>
puede haber una lista de valores separados por punto y coma (;
). Normalmente solo se usa un valor, aunque el atributo en negrita es útil junto con los atributos de color.Mirando los valores enumerados en la respuesta de Alexander Pogrebnyak, el 0 o 1 antes del punto y coma selecciona negrita o no:
Hay una lista útil de los códigos aquí http://ascii-table.com/ansi-escape-sequences.php
fuente