터미널을 지우는 방법이 있나요? 그런데 프롬프트를 화면 상단에 두지 않고 중간에 두나요? clear
기본적으로 모든 명령줄 매개변수가 무시되는 것 같습니다 .
이 작업을 수행할 수 있는 방법이 있을 것이라고 생각했지만 tput
찾을 수 없습니다.
답변1
tput
예를 들어 다음을 사용하여 커서를 화면의 특정 줄로 이동할 수 있습니다 .
tput cup 11 0
12행으로 이동합니다(값은 0부터 계산되기 시작합니다).
마찬가지로 tput
이 기능을 사용하면 해당 위치부터 화면 끝까지 지울 수 있습니다 ed
. 결합,
tput cup 11 0 && tput ed
어쩌면 그것이 당신이 원하는 것일 수도 있습니다.
화면의 중간 표시로 이동하려면 첫 번째 숫자가 반환됩니다.
stty size
(대부분의 시스템에서) 화면의 줄 수입니다. 다음을 명령에 추가하세요.
tput cup $(stty size|awk '{print int($1/2);}') 0 && tput ed
이 clear
계획은 다음과 다릅니다 tput ed
.
- 커서를 다음으로 이동시킵니다.집위치(왼쪽 상단) 및
- 그 지점부터 화면 끝까지 클리어합니다.
참고: 일부 플랫폼에서는tput ed
오래 전에 해결된 문제로 인해 작동하지 않을 수 있습니다. 이러한 경우curses/ncurses 구성을 업그레이드하면 문제가 해결됩니다.
답변2
인용하다답변
# Get ceiling eg: 7/2 = 4
ceiling_divide() {
ceiling_result=$((($1+$2-1)/$2))
}
clear_rows() {
POS=$1
# Insert Empty Rows to push & preserve the content of screen
for i in {1..$((LINES-POS-1))}; echo
# Move to POS, after clearing content from POS to end of screen
tput cup $((POS-1)) 0
}
# Clear quarter
alias ptop='ceiling_divide $LINES 4; clear_rows $ceiling_result'
# Clear half
alias pmid='ceiling_divide $LINES 2; clear_rows $ceiling_result'
# Clear 3/4th
alias pdown='ceiling_divide $((3*LINES)) 4; clear_rows $ceiling_result'
답변3
행 수가 홀수이면 tput cup
전체 페이지가 지워집니다.
다음과 같이 작성하면 문제가 해결됩니다.
tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed
답변4
클리어에 관심이 있으신 분들은맨 아래화면의 절반만 유지하고 나머지는 유지하면 다음과 같이 작동합니다.
half=$(stty size | awk '{print int($1/2)-1;}'); for i in `seq ${half}`; do echo '' ; done && tput cup ${half} 0 && tput ed
편집: 명확히 하기 위해 다른 답변을 실행하면 seq $(stty size | cut -d' ' -f1)
출력의 전반부가 남고 이 명령은 후반부(즉, 최신 출력)가 남습니다.