<Anterior | Contenido | Siguiente>
Mover el cursor
Se pueden utilizar códigos de escape para colocar el cursor. Esto se usa comúnmente para proporcionar un reloj o algún otro tipo de información en una ubicación diferente en la pantalla, como una esquina superior cada vez que se dibuja el mensaje. Aquí hay una lista de los códigos de escape que colocan el cursor:
Tabla 13-4: Secuencias de escape del movimiento del cursor
Escape Code Action
\ 033 [l;cH Mueve el cursor a la línea l y columna c
\ 033 [nA Mover el cursor hacia arriba n líneas
\ 033 [nB Mueve el cursor hacia abajo n líneas
\ 033 [nC Mover el cursor hacia adelante n personajes
\ 033 [nD Mover el cursor hacia atrás n personajes
\ 033 [2J Limpia la pantalla y mueve el cursor a la esquina superior izquierda (línea 0, columna 0)
\ 033 [K Limpiar desde la posición del cursor hasta el final de la línea actual
\ 033 [s Almacena la posición actual del cursor
\ 033 [u Recuperar la posición del cursor almacenada
Usando los códigos anteriores, construiremos un mensaje que dibuja una barra roja en la parte superior de la pantalla que contiene un reloj (representado en texto amarillo) cada vez que se muestra el mensaje. El código para el indicador es esta cadena de aspecto formidable:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\ u @ \ h \ W> \ $ "
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\ u @ \ h \ W> \ $ "
Echemos un vistazo a cada parte de la cadena para ver qué hace:
Mover el cursor
Tabla 13-5: Desglose de la cadena de solicitud compleja
Acción de secuencia
Acción de secuencia
\[ Comienza una secuencia de caracteres que no se imprimen. El propósito de esto es permitir que bash calcule correctamente el tamaño del indicador visible. Sin un cálculo preciso, las funciones de edición de la línea de comandos no pueden colocar el cursor correctamente.
\ 033 [s Almacena la posición del cursor. Esto es necesario para volver a la ubicación del mensaje después de que se hayan dibujado la barra y el reloj en la parte superior de la pantalla. Tenga en cuenta que algunos emuladores de terminal no reconocen este código.
\ 033 [0; 0H Mueva el cursor a la esquina superior izquierda, que es la línea 0, columna 0.
\ 033 [0; 41m Establece el color de fondo en rojo.
\ 033 [K Limpiar desde la ubicación actual del cursor (la esquina superior izquierda) hasta el final de la línea. Dado que el color de fondo ahora es rojo, la línea se borra a ese color creando nuestra barra. Tenga en cuenta que borrar hasta el final de la línea no cambia la posición del cursor, que permanece en la esquina superior izquierda.
\ 033 [1; 33m Establece el color del texto en amarillo.
\t Muestra la hora actual. Si bien este es un elemento de "impresión", aún lo incluimos en la parte no imprimible del mensaje, ya que no queremos que bash incluya el reloj al calcular el tamaño real del mensaje mostrado.
\ 033 [0m Desactivar color. Esto afecta tanto al texto como al fondo.
\ 033 [u Restaurar la posición del cursor guardada anteriormente.
\] Finaliza la secuencia de caracteres que no se imprimen.
<\ u @ \ h \ W> \ $ Cadena de solicitud.