Terminal.app를 사용하는 경우 셸 내장을 사용 clear
하거나 ^+ L(Control-L)를 눌러 화면을 지울 수 있습니다 .
그러나이 모든 것은 현재 화면 내용을 한 화면 높이 뒤로 밀고 첫 번째 줄에서 커서 / 입력을 재설정하는 것입니다. 다시 스크롤하여 볼 수 있음을 의미합니다.
당신이 할 수있는 일은 ⌘+ K(Command-K)를 눌러 전체 스크롤 백을 재설정하는 것 입니다.
이 작업을 수행 한 후에는 전혀 뒤로 스크롤 할 수 없습니다.
특정 상황 (특히 실행하기 전에 screen
또는 vim
)에서 명령이 실제로 실행되기 전에 스크롤을 다시 설정하고 싶습니다.
clear
OS X에서 구현 되는 명령 (예 :)이 있습니까? 의 존재를 감안 pbcopy
하고 pbpaste
, 나는 나이 작업을 수행 할 수 있도록 뭔가 비슷한 힘의 존재를 생각하고 있어요.
답변
터미널은 ED (Erase in Display) 이스케이프 시퀀스 확장을 지원하여 스크롤 백을 지 웁니다. xterm에서도 지원됩니다. VT100 매뉴얼에 설명 된 ED 명령 은 Ps 매개 변수에 다음 값을 허용합니다.
ESC [Ps J 매개 변수 매개 변수 의미 0 활성 위치에서 화면 끝까지 지우기 1 화면 시작에서 활성 위치로 삭제 2 모든 디스플레이 지우기
터미널 ( 및 xterm )은 다음을 추가합니다.
3 스크롤 백 지우기 (일명“저장된 줄”)
이렇게하면 화면이 아니라 스크롤 백만 지워집니다. 이를 통해 두 개의 이스케이프 시퀀스를 전송하여 둘 중 하나를 지울 수 있습니다.
예를 들어 다음 쉘 명령을 사용하여 화면과 스크롤을 지울 수 있습니다. clear && printf '\e[3J'
(이 clear
명령은 현재 터미널의 화면을 지우는 데 적합한 순서를 찾지 만 “스크롤 백 지우기”이스케이프 시퀀스는 사용자 지정이며 하드 코딩해야합니다.이 스크립트를 모르는 쉘 스크립트에 넣으면 일부는 오직 터미널 실행됩니다를 들어, 당신은 확인해야 $TERM_PROGRAM
입니다 Apple_Terminal
전송하기 전에.)
답변
⌘K, ‘보기> 스크롤 백 지우기’바로 가기
업데이트 : 다음 명령으로 AppleScript를 사용하여 자동화 할 수 있습니다.
osascript -e 'tell application "System Events" to keystroke "k" using command down'
… 물론 alias
원하는대로 또는 ~/.profile
로그인 스크립트에 함수에 저장할 수 있습니다 🙂
보안 상, 잘못된 프론트 앱에 키 스트로크를 발생시킬 위험없이 백그라운드에서이 기능을 사용할 수 있으려면 다음 테스트로이를 둘러 보는 것이 좋습니다.
if application "Terminal" is frontmost
… 다음 코드를 제공합니다.
osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'
… 차례로, 제대로 탈출하고 alias
ed :
alias clear="osascript -e 'if application \"Terminal\" is frontmost then tell application \"System Events\" to keystroke \"k\" using command down'"
그리고 여기 새로운 것이 있습니다 clear
! 🙂
답변
다음은 macOS ‘Terminal 및 iTerm2 모두에서 작동하는 코드입니다. 창을 전경에 둘 필요도 없습니다.
printf '\033[2J\033[3J\033[1;1H'
작동 원리
이것은 3 개의 ANSI 이스케이프 시퀀스 , 특히 “Control Sequence Introducer”명령으로 구성 됩니다.
\033
은 나타내는 문자의 코드 포인트를 하드 코드하는 이스케이프 시퀀스입니다. 리딩 0
은 나머지 시퀀스가 8 진수 값 (이 경우 8 진수)을 인코딩 함을 나타냅니다 33
. 그 10 진수 값은 27
( 3 * 8^1 + 3 * 8^0
= 3 * 8 + 3
= 24 + 3
= 27
)입니다. ASCII에서 코드 포인트 27
는 “ESC”(이스케이프) 문자입니다.
CSI
명령은 ESC [
, aka로 시작 \033[
합니다. 이것을 알면 문자열을 3 부분으로 나눌 수 있습니다.
CSI 2 J
- “ED – Erase in Display”명령의 인스턴스이며 다음과 같은 형식입니다.
CSI n J
- 이 경우
n
값이 설정되어2
두 번째 변형을 호출합니다. “n이 2 인 경우 전체 화면을 지우고 커서를 DOS ANSI.SYS에서 왼쪽 위로 이동합니다.”
- “ED – Erase in Display”명령의 인스턴스이며 다음과 같은 형식입니다.
CSI 3 J
:- “ED – Erase in Display”명령의 인스턴스이며 다음과 같은 형식입니다.
CSI n J
- 이 경우
n
값이 3으로 설정되어3
“n이 3이면 전체 화면을 지우고 스크롤 백 버퍼에 저장된 모든 행을 삭제합니다 (이 기능은 xterm 용으로 추가되었으며 다른 터미널 응용 프로그램에서 지원됨”).
- “ED – Erase in Display”명령의 인스턴스이며 다음과 같은 형식입니다.
CSI 1 ; 1 H
:- “ED – Erase in Display”명령의 인스턴스이며 다음과 같은 형식입니다.
CSI n ; m H
커서를 행
n
, 열로 이동합니다m
. 값은 1을 기준으로하며 생략하면 기본값은 1 (왼쪽 상단)입니다. CSI 17H와CSI ;5H
동의어CSI 1;5H
일뿐만 아니라 같은 시퀀스CSI 17;H
CSI 17;1H
n
및m
값으로 설정되어1
이 명령 움직이면 왼쪽 상단의 코너에 커서를 말한다.
- “ED – Erase in Display”명령의 인스턴스이며 다음과 같은 형식입니다.