Linux / 명령어 / clear - 터미널 화면 정리
clear는 터미널 화면을 지워 작업 공간을 정리하는 명령입니다. 일반적인 ncurses 구현에서는 현재 화면뿐 아니라 터미널이 지원할 경우 스크롤백 버퍼도 지우려고 시도하며, -x 옵션을 사용하면 스크롤백은 남길 수 있습니다.
clear는 명령 기록이나 파일을 삭제하지 않습니다. 화면 표시만 바꾸므로 이전 명령은 보통 셸의 기록 기능으로 다시 확인할 수 있습니다.
clear 명령어란?
clear는 TERM 환경 변수에서 터미널 종류를 확인하고 terminfo 데이터베이스의 기능 정보를 이용해 적절한 제어 시퀀스를 출력합니다. 따라서 단순히 빈 줄을 여러 번 출력하는 것과 다르며, 터미널 종류와 구현에 따라 세부 동작이 달라질 수 있습니다.
이 글의 옵션 설명은 Linux에서 널리 사용되는 ncurses의 clear를 기준으로 합니다.
기본 문법
clear [-x] [-T 터미널종류] clear -V
가장 일반적인 사용법은 옵션 없이 실행하는 것입니다.
clear
clear가 지우는 것과 지우지 않는 것
| 대상 | 동작 |
|---|---|
| 현재 터미널 화면 | 화면을 지우고 커서를 초기 위치로 이동합니다. |
| 스크롤백 버퍼 | 터미널과 ncurses가 관련 기능을 지원하면 기본 실행에서 지우려고 시도합니다. -x로 이 동작을 막을 수 있습니다. |
| 셸 명령 기록 | 삭제하지 않습니다. history나 위쪽 방향키로 다시 확인할 수 있습니다. |
| 명령의 출력 원본 | 로그 파일이나 명령이 만든 데이터에는 영향을 주지 않습니다. |
| 셸 변수와 현재 디렉터리 | 변경하지 않습니다. |
스크롤백을 남기는 -x
clear -x
-x는 화면은 지우되 스크롤백 버퍼를 지우려는 시도를 하지 않습니다. 화면을 정리한 뒤 이전 출력으로 스크롤해 돌아가야 한다면 유용합니다.
이 옵션은 ncurses clear의 기능입니다. 다른 운영체제나 구현에서는 지원하지 않을 수 있으므로 clear -V 또는 해당 시스템의 매뉴얼을 확인하세요.
터미널 종류를 지정하는 -T
clear -T xterm-256color
일반적으로 clear는 TERM 환경 변수에서 터미널 종류를 자동으로 가져오므로 -T가 필요하지 않습니다. 터미널 감지 문제를 진단하거나 특정 종류에 맞는 제어 시퀀스를 생성할 때만 명시적으로 사용합니다.
printf '%s\n' "$TERM" infocmp "$TERM"
실제 터미널과 맞지 않는 종류를 지정하면 화면이 예상과 다르게 지워지거나 제어 문자가 보일 수 있습니다.
옵션 정리
| 옵션 | 설명 |
|---|---|
-x |
스크롤백 버퍼를 지우려는 동작을 생략합니다. |
-T 종류 |
TERM 대신 지정한 터미널 종류의 기능 정보를 사용합니다. |
-V |
연결된 ncurses 버전을 출력하고 종료합니다. |
Ctrl+L과 clear의 차이
Bash의 기본 Readline 키 설정에서 Ctrl+L은 화면을 다시 그려 현재 입력 줄을 위쪽으로 옮기는 역할을 합니다. 빠르게 화면만 정리할 때 편리하지만 터미널의 스크롤백 처리 방식은 clear와 같다고 보장할 수 없습니다.
| 방법 | 장점 | 특징 |
|---|---|---|
clear |
터미널 기능 정보를 사용하고 옵션을 선택할 수 있습니다. | 구현에 따라 스크롤백까지 지울 수 있습니다. |
clear -x |
화면을 정리하면서 이전 출력으로 돌아가기 쉽습니다. | ncurses 구현의 옵션입니다. |
Ctrl+L |
입력 중 키보드에서 빠르게 실행할 수 있습니다. | 셸의 줄 편집 설정과 터미널에 따라 동작이 달라질 수 있습니다. |
clear와 reset의 차이
clear는 정상적으로 동작하는 터미널의 화면을 정리할 때 사용합니다. 반면 reset은 바이너리 출력이나 잘못된 제어 시퀀스로 글자 표시, 입력 모드 또는 줄바꿈이 망가졌을 때 터미널 상태를 다시 초기화하는 용도입니다.
reset
단순히 화면이 복잡한 경우에는 clear가 빠르고, 입력한 문자가 보이지 않거나 표시 모드가 깨진 경우에는 reset이 더 적합합니다.
tput으로 화면 지우기
tput도 terminfo 데이터베이스를 사용해 터미널 기능을 출력할 수 있습니다.
tput clear
셸 스크립트에서 터미널 제어 기능을 조합해야 할 때 유용합니다. 다만 출력을 파일이나 파이프로 보내는 비대화형 작업에서는 제어 시퀀스가 불필요한 데이터로 남을 수 있으므로, 터미널 연결 여부를 확인하는 것이 좋습니다.
스크립트에서 사용할 때
대시보드처럼 화면을 반복 갱신하는 대화형 프로그램이 아니라면 스크립트가 사용자의 화면을 임의로 지우지 않는 편이 좋습니다. 오류 메시지와 이전 결과를 비교하기 어려워지고, 로그 수집 환경에는 제어 문자가 섞일 수 있기 때문입니다.
if test -t 1; then clear fi
test -t 1은 표준 출력이 터미널에 연결되었는지 확인합니다. 화면 갱신이 목적이라면 watch나 목적에 맞는 터미널 UI 도구도 검토하세요.
오류 해결
TERM environment variable not set
TERM이 설정되지 않았거나 비정상적인 비대화형 환경에서 실행한 경우 발생할 수 있습니다.
printf '%s\n' "$TERM"
실제 터미널 종류를 모른 채 임의의 값을 지정하기보다는 SSH, 컨테이너 또는 작업 실행 환경이 TERM을 전달하도록 구성하는 것이 좋습니다.
unknown terminal type
TERM 값에 대응하는 terminfo 항목이 시스템에 없을 수 있습니다. infocmp "$TERM"으로 확인하고, 필요한 터미널 정보 패키지를 설치하거나 클라이언트가 호환되는 값을 보내도록 설정하세요.
clear 후에도 이전 출력이 보입니다.
터미널 에뮬레이터가 스크롤백 삭제 기능을 지원하지 않거나, 사용 중인 clear 구현이 화면만 지울 수 있습니다. 이는 명령 기록이 삭제되지 않았다는 의미와는 별개입니다.
자주 묻는 질문
clear를 실행하면 history도 삭제되나요?
아닙니다. clear는 터미널 표시를 바꾸며 Bash의 명령 기록은 삭제하지 않습니다. 기록 삭제는 history의 별도 기능과 설정에 의해 처리됩니다.
스크롤백을 유지하면서 화면만 지울 수 있나요?
ncurses 구현에서는 clear -x를 사용할 수 있습니다. 시스템의 구현이 해당 옵션을 지원하는지 확인하세요.
clear가 파일을 삭제할 위험이 있나요?
정상적인 clear 명령은 터미널 제어 시퀀스를 출력할 뿐 파일을 삭제하지 않습니다. 다만 같은 이름의 별칭이나 함수가 재정의되어 있을 수 있으므로 의심스러우면 type -a clear로 확인하세요.









