Script de Shell para desplazarse hacia abajo por todo el texto en la terminal sin modificarlo

Script de Shell para desplazarse hacia abajo por todo el texto en la terminal sin modificarlo

Estoy intentando usar un script /bin/sh para desplazarme hacia abajo un par de líneas de texto en la terminal. En este caso, una solución que utilice smcup, rmcup no es aceptable.

Un par de opciones más que probé fallaron (incluye la corrección deJdeBP):

  • tput cup 0 0; tput ri
  • tput cup 0 0; tput rin 3

Esto es un poco extraño porque man terminfo especifica:

Para desplazar el texto hacia abajo, un programa va a la esquina superior izquierda de la pantalla y envía la cadena ri (índice inverso). Las cadenas ind y ri no están definidas cuando no están en sus respectivas esquinas de la pantalla.

La salida de la terminal debe poder desplazarse antes de ejecutar cualquier prueba (intente usar set, env antes de las pruebas).

Una solución para xterm será suficiente.

Para acelerar las pruebas y aclarar, utilice este script para comenzar:

#!/bin/sh

# create scrollable text
set

# includes correction from JdeBP
# try to scroll text down one line
tput cup 0 0; tput ri

# includes correction from JdeBP
# try to scroll text down 3 lines
tput cup 0 0; tput rin 3

Respuesta1

tput cup 0 0, ri

No es de extrañar que esto fracasara. esto no esla sintaxis de la línea de comandos del tputprograma.

taza tput 0 0
tput ri

Muy simple.

Notas para usuarios avanzados que realizan tareas complejas en algo más que XTerm:

  • En terminales reales y emuladores de buena calidad de los mismos, los márgenes superior e inferior no predeterminados y el modo de origen desactivado afectan el comportamiento y dónde se debe colocar el cursor para desplazarse. No es tan simple como lo implica el modelo terminfo. Consulte el documento DEC VT4xx/5xx para obtener detalles sobre terminales DEC reales, por ejemplo.
  • En el mundo DEC, SD y SU son ventanas panorámicas, no desplazamientos de búfer. Un VT525 tiene ventanas múltiples y estas secuencias de control mueven las ventanas alrededor del búfer subyacente.
  • Algunos emuladores de terminal más pobres que no son completamente limpios de 8 bits no reconocen correctamente U+0084 y U+008D como IND y RI, y fuerzan el uso de alias de 7 bits.

información relacionada