수정하지 않고 터미널에서 전체 텍스트를 아래로 스크롤하는 쉘 스크립트

수정하지 않고 터미널에서 전체 텍스트를 아래로 스크롤하는 쉘 스크립트

/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프로그램 의 명령줄 구문.

컵 0 0 넣기
리를 입력하다

매우 간단합니다.

XTerm 이상의 복잡한 작업을 수행하는 고급 사용자를 위한 참고 사항:

  • 실제 터미널과 좋은 품질의 에뮬레이터에서는 기본이 아닌 위쪽 및 아래쪽 여백과 원점 모드가 꺼져 있는 경우 동작과 스크롤하기 위해 커서를 배치해야 하는 위치에 영향을 줍니다. terminfo 모델이 암시하는 것만큼 간단하지는 않습니다. 예를 들어 실제 DEC 터미널에 대한 자세한 내용은 DEC VT4xx/5xx doco를 참조하세요.
  • DEC 세계에서 SD와 SU는 버퍼 스크롤이 아닌 창 팬입니다. VT525에는 다중 창 기능이 있으며 이러한 제어 시퀀스는 기본 버퍼 주위로 창을 이동합니다.
  • 완전히 8비트가 아닌 일부 열악한 터미널 에뮬레이터는 U+0084 및 U+008D를 IND 및 RI로 올바르게 인식하지 못하고 7비트 별칭을 강제로 사용합니다.

관련 정보