명령 줄에서 화면의 절반을 지 웁니다.


11

터미널을 지우는 방법이 있습니까?하지만 화면 상단에 프롬프트를 남기지 않고 가운데에 남겨 두십시오. clear기본적으로 모든 명령 줄 매개 변수를 무시하는 것처럼 보입니다 .

나는 이것을 할 수있는 방법이 tput있지만 그것을 찾을 수 없다고 생각했다.

답변:


12

tput커서를 화면의 주어진 줄로 이동할 수 있습니다 .

tput cup 11 0

열두 번째 줄로 이동합니다 (값은 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 구성을 업그레이드하면 문제가 해결됩니다.


유닉스에서 이것은 텍스트를 지우지는 않지만 커서를 움직입니다.
James Owers

1
10 년 전에 수정 된 버그 인 것 같습니다. 아마도 물건을 업그레이드 할 시간입니다.
토마스 디키

0

줄 수가 홀수이면 tput cup전체 페이지 를 지 웁니다.
다음과 같이 작성하면 문제가 해결됩니다.

tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed

-1

나머지를 유지하면서 화면 의 아래쪽 절반을 지우고 싶다면 다음과 같이하십시오.

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)다른 답변 을 실행 하면 출력의 전반부는 그대로 남고이 명령은 후반을 떠나게됩니다 (즉 가장 최근의 출력).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.