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


523

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

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


1
쉘 스크립트에서 작동하는 방법을 찾은 적이 있습니까?
Zev Eisenberg

7
@ ZevEisenberg 나는 그렇게 생각하지 않습니다. 어쨌든, 나는 이것이 전혀 필요하지 않다고 생각합니다. 에 만족합니다 Command+K.
Eonil

@ZevEisenberg 내 업데이트 된 답변 (및 다른 답변)은 스크립트에서 수행하는 방법을 보여줍니다.
Alok Singhal

답변:


1098

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

+K

Command+ K최신 키보드

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

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

@fearless_fool apple.stackexchange.com/a/31887 할 수 있습니까? 그렇다면 알려주세요!
Alok Singhal

글쎄,하지만 더 나은 방법 은 아래 ( stackoverflow.com/a/26615036/558639 )를 참조하십시오 .
fearless_fool

9
실수로이 버튼을 누르면 클리어 된 버퍼를 어떻게 볼 수 있습니까?
Joshua Pinter

4
@JoshPinter, 우연히 누르지 마십시오. :) ( 예를 들어 인쇄하려고 할 때 실제로 스크롤 백 기록이 사라져야하는 clear경우를 제외하고 는 모든 경우에 사용 하는 것이 좋습니다.)
Wildcard

2
@ 와일드 카드 페어. :) 사용에 대한 좋은 조언 clear. 그래도 그들은 반대로해야한다고 생각합니다. 입력하는 clear것이 타격보다 더 의도적 인 것 같습니다 Command + K.
Joshua Pinter

85

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

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'

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


1
나는 "더 나은 방법"을 사용 .bash_profile했고 새로운 터미널 창을 열 때 때때로 더 이상 글리치 버퍼를 얻지 못하기 때문에 훌륭합니다.
Patrick Roberts

1
이것이 가장 개념적으로 정답입니다. qiuyi의 대답은 약간의 가독성을 희생하면서 &&를 피합니다. Alok의 답변을 확장하여 현재 스크립트를 실행하는 터미널을 지우면 개선 될 수 있지만 이것은 더 간단합니다.
잭 모리스

1
이것은 스크립팅에 더 좋습니다. 무리 감사!
Andy

이것은 다른 시스템에 푹 빠졌을 때 완벽합니다. 감사합니다!
JBR 윌킨슨

48

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


3
이것이 가장 좋은 방법입니다. 다음과 같이 별칭을 정의해야합니다.alias cls='printf "\33c\e[3J"'
mpyw

고마워요, 이것이 바로 내가 필요한 것입니다.
GigaBass

iTerm2에서도 작동
Anders Zommarin

1
@ LoïcFaure-Lacroix는 기본적으로 이전 내용을 볼 수 없을 때까지 화면을 스크롤하는 명령 \33c과 동일한 기능을 수행합니다 clear. 화면을 지우지 만 스크롤 백 버퍼는 아닙니다 (즉, 여전히 스크롤 막대를 사용하여 이전 출력을 볼 수 있음). \e[3J실제로 스크롤 백 버퍼를 지우려면를 추가하십시오 .
luiss

@EirNym, function cls { printf '\33c\e[3J\33c' }줄을 추가하십시오 ~/.profile(또는 시스템 전체 /etc/profile). 이것은 macOS, FreeBSD, Linux 등의 데스크탑 환경에서 작동합니다. 추가 기능 \33c\e[3JmacOS 이외 의 추가 리터럴 을 지우는 데 사용 됩니다 (기본적으로 Linux / FreeBSD의 경우에만 필요 printf '\33c').
vulcan raven

33

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

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

이것이 정답이어야합니다. AppleScript는 지저분하지만 작업이 완료됩니다. 감사.
allanberry

upvoted했지만 다른 답변은 이것이 모든 창을 지운다는 것을 지적합니다!
Michael Bushe

20

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

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

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


1
요세미티 (10.10)부터는 View->Clear Scrollback더 이상 터미널 메뉴에 없습니다. 키보드 단축키 CMD+는 K여전히 작동합니다.
Nicolas Miari

1
@NicolasMiari처럼 보이는 Clear Scrollback단지에서 이동 ViewEdit요세미티에서.
BrainSteel

10

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


9

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

CTRL+L

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

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


1
화면이 지워지지 만 스크롤 백 버퍼는 그대로 유지됩니다.
George

예를 들어 cmd + f를 사용하려면 동일하지 않습니다
bormat

7

마지막 출력 만 삭제하려면

+L

터미널을 완전히 지우려면 :

+K


6

Command + K 는 이전 출력을 지 웁니다.

입력 한 텍스트를 지우려면 먼저 " Command + A "를 사용 하여 왼쪽으로 이동 한 다음 " Control + K " 를 사용하여 포인터 오른쪽의 텍스트를 지 웁니다 .

시각적 예 : 여기에 이미지 설명을 입력하십시오



5

옳은 일, 옳은 일을!

이전 마크로 클리어 :Command-L

이전 북마크 지우기 :Option-Command-L

시작하기 : Command-K

너희들을 도와 줘!


1

위의 내용 중 어느 것도 작동하지 못했습니다 (macOS).

조합이 나를 위해 일했습니다-

IO.write "\e[H\e[2J\e[3J"

버퍼와 화면을 지 웁니다.


IO.write는 무엇입니까? 작동 시키려면 printf로 바꿔야했습니다. 어쨌든 고마워 이것은 나를 위해 가장 잘 작동합니다
Fitsyu

1
내가 왜 선택했는지 잘 모르겠습니다 IO.write. 동일하게 작동하지만 해당 문자를 터미널에 인쇄하기로 결정했습니다.
Michael Baldry

1

터미널에 다음을 입력하면 기록 이 지워지지 만 (위쪽 화살표를 사용하면 아무 것도 얻지 못함) 화면 이 지워지지 는 않습니다.

history -c

그렇습니다. @phil 디스크에서 영구적으로 삭제합니까, 아니면 여전히 검색 할 수 있습니까?
Steven Roose

기본적으로 ~ / .bash_history 파일을 삭제하므로 복구 할 수 있으면 지워진 명령을 복구 할 수 있습니다
Ryan Pendleton

아니요 작동하지 않습니다. 스크롤 된 기록이 여전히 존재하며 위로 스크롤하여 다시 볼 수 있습니다.
Eonil

26
요청 된 내용이 아닙니다. 이렇게하면 현재 버퍼가 아닌 히스토리가 지워지며 이는 매우 다른 두 가지입니다.
Sean Cameron

1
요구 된 것이 아니라 해롭다 . 나는 이것에 물 렸고 내 역사에는 중요한 것들이 포함되어 있습니다.
Elazar

0

필터를 원한다면 출력에 압도적 인 경우 이것을 시도하십시오

adb -d 쉘 dumpsys 활동 | grep ActivityRecord


-4

CMD + K는 항상 나를 위해 일하는 것 같습니다.


2
이것은 8 년 전에 작성된 승인 된 것과 같은 대답입니다.
piksel bitworks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.