[macos] Mac OS X의 터미널에서 이전 출력을 지우는 방법은 무엇입니까?

나는 clear현재 화면을 ‘지우는’명령을 알고 있지만 많은 줄 바꿈을 인쇄 하여이 작업을 수행합니다. 지운 내용은 위로 스크롤됩니다.

위로 스크롤해도 도달 할 수 없도록 터미널에서 이전의 모든 출력을 완전히 지우는 방법이 있습니까?



답변

터미널을 수동으로 지우려면 :

+K

Command+ K최신 키보드

쉘 스크립트 내에서 터미널을 지우려면

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'


답변

스크립트 내에서 화면을 지우는 더 좋은 방법 …

OP에 명시된 OSX 터미널 앱을 사용하는 경우 https://apple.stackexchange.com/a/113168 덕분에 더 나은 접근 방식 은 다음과 같습니다.

clear && printf '\e[3J'

간결하게 ( https://stackoverflow.com/users/4834046/qiuyi의 팁 ) :

printf '\33c\e[3J'

화면뿐만 아니라 스크롤 백 버퍼를 지 웁니다. 다른 옵션도 있습니다 . 자세한 내용은 https://apple.stackexchange.com/a/113168 을 참조 하십시오 .

원래 답변

이 스레드에 제공된 AppleScript 답변은 작동하지만 활성 상태 인 터미널 창을 지우면 나쁜 부작용이 있습니다. 한 창에서 스크립트를 실행하고 다른 창에서 작업을 수행하려고하면 놀라운 일입니다!

https://apple.stackexchange.com/a/31887 에서 가져온 화면이 맨 앞에있는 경우에만 화면을 지우도록 AppleScript를 수정하여이를 피할 수 있습니다 .

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

…하지만 현재 창이 아닌 경우 출력이 다시 전류가 될 때까지 쌓입니다. 아마도 원하는 것이 아닙니다.


답변

예쁜 방법은 printf '\33c\e[3J'


답변

이것을 .bash_profile 또는 .bashrc에 넣으십시오.

function cls {
osascript -e 'tell application "System Events" to keystroke "k" using command down'
}


답변

Mac OS X 터미널에서이 기능은 이미 터미널 응용 프로그램에 내장되어 있습니다 View->Clear Scrollback(기본값은 CMD+ K).

따라서 Apple의 키보드 단축키로 원하는대로 다시 할당 할 수 있습니다. “Clear Scrollback”명령으로 터미널에 대한 새로운 바로 가기를 추가하십시오. 버퍼를 지우지 않고 현재 화면 내용을 지우는 + 와 비슷하기 때문에 CMD+를 사용 합니다.LCTRLL

스크립트에서 이것을 어떻게 사용할지 잘 모릅니다 (다른 사람들이 지적한 것처럼 AppleScript 일 수 있습니다).


답변

Mac OS X Yosemite (10.10) Option + Command + K에서는 Terminal.app에서 스크롤 백을 지우는 데 사용 합니다.


답변

또는 다음 을 눌러 페이지 나누기 (ASCII 양식 공급)를 보낼 수 있습니다 .

CTRL+L

이것은 기술적으로 새로운 페이지를 시작하지만 다른 모든 방법과 동일한 순 효과를 갖지만 훨씬 빠릅니다 (물론 Apple + K 솔루션 제외).

그리고 이것은 ASCII 제어 명령이기 때문에 모든 쉘에서 작동합니다.