Bash는 첫 번째 줄을 제외하고 화면을 지웁니다.

Bash는 첫 번째 줄을 제외하고 화면을 지웁니다.

내 스크립트는 일부 텍스트를 에코하고 추가로 처리합니다. tput을 사용하여 화면을 지우고 화면의 첫 번째 줄을 유지하고 싶습니다.

예를 들어.

echo Started
seq 1000
tput cup 1 0 && tput ed

이 방법으로 Started는 화면에 남아 있고 다른 모든 것은 지워지지만 출력이 작은 경우(예: seq 10)에만 작동하고 더 긴 스크롤 출력에는 작동하지 않습니다.

답변1

일부 터미널에서는 스크롤 영역을 정의할 수 있습니다.

tput csr 1 "$(( ${LINES:-$(tput lines)} - 1 ))"
tput clear
echo Started
seq 1000

"시작" 행이 화면 밖으로 스크롤되지 않도록 두 번째 행에서 마지막 행까지 스크롤 영역을 설정합니다. 그런 다음:

tput cup 1 0 && tput ed

마지막 행에서 두 번째 행을 다시 지웁니다.

자세한 내용은 terminfo(5)를 참조하십시오.

버전 608부터는 비스크롤 헤더 행을 지정할 수 있는 옵션 less도 있습니다 .--header=lines[,cols]

{
  echo Started; seq 1000
} | less --header=1

복귀 후에도 화면에 남는 제목을 -X포함한 출력 옵션을 추가할 수 있습니다 . 이스케이프 시퀀스의 그래픽 재생을 허용하고 입력이 화면에 맞는 경우 페이지를 매기지 않는 옵션 less도 참조하세요 .-Rless-F

관련 정보