%3F.png)
Básicamente quiero animar mi terminal pero como el texto es demasiado largo, necesito un buscapersonas. Digamos que quiero cambiar el color de mi texto periódicamente en menos. ¿Es posible?
Respuesta1
EDITARlas respuestas porvonbrandyThomas Dickeyson técnicamente más precisos.
less
admite escapes ANSI sin formato cuando -r
se utiliza la opción. También admite Borrar en línea.
Sin embargo, no verás ninguna animación. Por ejemplo:
echo -e "foo\x1b[1G\x1b[2Kbar" > test.ansi
less -r test.ansi
Sólo imprimirá bar
.
more
pasa escapes ANSI de forma predeterminada, pero no admite la edición de líneas según lo que he probado.
Ver tambiénesta respuesta de Stackoverflow sobre las diferencias de less
ymore
most
.
Respuesta2
Borrar la línea sólo tiene una relación indirecta con el cambio de los colores del terminal: si cambia elfondocolor, entonces muchos terminales (consola Linux, rxvt, xterm y programas que imitan uno de ellos) colorearán el área limpia del fondo usando ese color.
less
Utiliza algunas operaciones de compensación, pero no \x1b[2K
. Leer elfuente, utiliza varias funciones utilizando la interfaz termcap. Las partes más relevantes se describen en elinformación termino(5)página del manual:
clr_bol el1 cb Clear to beginning
of line
clr_eol el ce clear to end of line
(P)
Es decir, \x1b[K
y \x1b[K
, para el1
y el
, respectivamente. No existe una capacidad termcap convencional el2
y (a menos que indique less
simplemente pasar el contenido de un archivo usando la opción -r
o -R
), less
no enviará un archivo \x1b[2K
.
Lo mismo es cierto para more
, por ejemplo, como en elutil-linux
paquete: utiliza solo funciones de termcap. A diferencia de less
, more
no tiene opción para enviar caracteres no imprimibles directamente al terminal.
Si utilizas la opción -r
o de , debes tener en cuenta que es-R
less
limitado: less
no sabe (ni le importa mucho) lo que hacen esos escapes. Desde elpagina del manual:
-r
o--raw-control-chars
Causas"crudo"caracteres de control que se mostrarán. El valor predeterminado es mostrar caracteres de control usando la notación de intercalación; por ejemplo, un control A (octal 001) se muestra como "^A". Advertencia: cuando-r
se utiliza la opción,less
no puedorealice un seguimiento de la apariencia real de la pantalla (ya que esto depende de cómo responde la pantalla a cada tipo de carácter de control). Por lo tanto, pueden producirse diversos problemas de visualización, como líneas largas que se dividen en el lugar equivocado.
Respuesta3
Lo que reacciona a las secuencias de escape normalmente es el tty (a menos que el programa en ejecución configure que no las respete, en cuyo caso el programa mismo puede hacerlo). more(1)
realiza una reescritura de pantalla bastante primitiva (en realidad es suficiente escribir líneas de longitud de pantalla y esperar a que se presione una tecla), por lo que supongo que simplemente pasa la entrada. less(1)
necesita hacer una copia de seguridad, por lo que necesita un control más detallado de la pantalla.