Shell script para rolar todo o texto no terminal sem modificá-lo

Shell script para rolar todo o texto no terminal sem modificá-lo

Estou tentando usar um script /bin/sh para rolar algumas linhas de texto no terminal. Uma solução usando smcup, rmcup não é aceitável neste caso.

Algumas outras opções que tentei falharam (inclui correção deJdeBP):

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

Isso é um pouco estranho porque man terminfo especifica:

Para rolar o texto para baixo, um programa vai para o canto superior esquerdo da tela e envia a string ri (índice reverso). As strings ind e ri são indefinidas quando não estão em seus respectivos cantos da tela.

A saída do terminal deve ser rolável antes de executar qualquer teste (tente usar set, env antes dos testes).

Uma solução para xterm será suficiente.

Para agilizar os testes e esclarecer use este script para iniciar:

#!/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

Responder1

tput cup 0 0, ri

Não é de admirar que isso tenha falhado. Isso não éa sintaxe da linha de comando do tputprograma.

coloque o copo 0 0
coloque ri

Muito simples.

Notas para usuários avançados que fazem coisas complexas além do XTerm:

  • Em terminais reais e em emuladores de boa qualidade, as margens superior e inferior não padrão e o modo de origem desativado afetam o comportamento e onde o cursor deve ser colocado para rolar. Não é tão simples quanto o modelo terminfo sugere. Consulte o documento DEC VT4xx/5xx para obter detalhes sobre terminais DEC reais, por exemplo.
  • No mundo DEC, SD e SU são janelas panorâmicas, não rolagens de buffer. Um VT525 possui múltiplas janelas e essas sequências de controle movem as janelas pelo buffer subjacente.
  • Alguns emuladores de terminal mais pobres, não totalmente limpos de 8 bits, não reconhecem corretamente U+0084 e U+008D como IND e RI e forçam o uso de aliases de 7 bits.

informação relacionada