Я пытаюсь использовать скрипт /bin/sh для прокрутки вниз пары строк текста в терминале. Решение с использованием smcup, rmcup в этом случае неприемлемо.
Я попробовал еще несколько вариантов, но все они оказались неудачными (включая исправление отJdeBP):
tput cup 0 0; tput ri
tput cup 0 0; tput rin 3
Это немного странно, потому что man terminfo определяет:
Чтобы прокрутить текст вниз, программа переходит в верхний левый угол экрана и отправляет строку ri (обратный индекс). Строки ind и ri не определены, если они не находятся в соответствующих углах экрана.
Перед запуском любых тестов необходимо обеспечить возможность прокрутки вывода терминала (попробуйте использовать set, env перед тестами).
Решения для xterm будет достаточно.
Для ускорения и уточнения тестов используйте этот скрипт для запуска:
#!/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
решение1
tput cup 0 0, ri
Неудивительно, что это не удалось. Это несинтаксис командной строки tput
программы.
tput чашка 0 0 tput ri
Очень просто.
Примечания для продвинутых пользователей, выполняющих сложные задачи не только в XTerm:
- На реальных терминалах и их качественных эмуляторах нестандартные верхние и нижние поля и выключенный режим источника влияют на поведение и на то, где должен быть размещен курсор для прокрутки. Это не так просто, как предполагает модель terminfo. См., например, документацию DEC VT4xx/5xx для получения подробной информации о реальных терминалах DEC.
- В мире DEC SD и SU — это панорамы окон, а не прокрутки буфера. VT525 имеет многооконность, и эти управляющие последовательности перемещают окна вокруг базового буфера.
- Некоторые некачественные эмуляторы терминала, не полностью поддерживающие 8 бит, некорректно распознают U+0084 и U+008D как IND и RI и принудительно используют 7-битные псевдонимы.