![Bash는 첫 번째 줄을 제외하고 화면을 지웁니다.](https://linux55.com/image/211227/Bash%EB%8A%94%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EC%A4%84%EC%9D%84%20%EC%A0%9C%EC%99%B8%ED%95%98%EA%B3%A0%20%ED%99%94%EB%A9%B4%EC%9D%84%20%EC%A7%80%EC%9B%81%EB%8B%88%EB%8B%A4..png)
내 스크립트는 일부 텍스트를 에코하고 추가로 처리합니다. 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
도 참조하세요 .-R
less
-F