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 tput
programa.
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.