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로 확인하세요.

관련 글과 공식 문서

같은 카테고리의 다른 글
Linux 강좌 / 셸의 명령 실행 방식 - ;, &&, ||, 별칭과 환경 변수

Linux 강좌 / 셸의 명령 실행 방식 - ;, &&, ||, 별칭과 환경 변수

Bash가 명령을 해석하고 종료 상태에 따라 다음 명령을 실행하는 방식을 알아봅니다. ;, &&, ||와 별칭·환경 변수의 차이를 안전한 예제로 설명합니다.

Linux / 명령어 / column - 텍스트를 읽기 좋은 표 형태로 정렬

Linux / 명령어 / column - 텍스트를 읽기 좋은 표 형태로 정렬

Linux column 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux ln 명령어로 하드 링크와 심볼릭 링크를 만드는 방법을 설명합니다. 두 링크의 차이, 상대 경로, 깨진 링크와 기존 링크 교체 시 주의점도 정리합니다.

Linux / 네트워크 / IP 확인하는 방법

Linux / 네트워크 / IP 확인하는 방법

Linux에서 ip address와 ip route get으로 인터페이스 주소와 실제 출발지 IP를 확인하는 방법을 설명합니다. 사설·공인 IP, IPv4·IPv6와 컨테이너 환경의 차이도 정리합니다.

Linux / 명령어 / su - 사용자 계정 전환

Linux / 명령어 / su - 사용자 계정 전환

Linux su 명령어로 다른 사용자 권한의 셸과 단일 명령을 실행하는 방법을 설명합니다. su와 su --login 차이, 환경 변수, PAM 인증, sudo·runuser 선택 기준과 보안 주의사항을 정리합니다.

Linux / 명령어 / shutdown - 시스템 종료·재시작 예약과 취소

Linux / 명령어 / shutdown - 시스템 종료·재시작 예약과 취소

Linux shutdown 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / getent - NSS 사용자·그룹·호스트 정보 조회

Linux / 명령어 / getent - NSS 사용자·그룹·호스트 정보 조회

Linux getent 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / chgrp - 파일 소유 그룹 변경

Linux / 명령어 / chgrp - 파일 소유 그룹 변경

Linux chgrp 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / date - 현재 시각 표시와 출력 형식 지정

Linux / 명령어 / date - 현재 시각 표시와 출력 형식 지정

Linux date 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux 강좌 / 프로세스 확인·일시정지·종료하기

Linux 강좌 / 프로세스 확인·일시정지·종료하기

ps, top, pgrep으로 프로세스의 상태와 자원 사용량을 확인합니다. 실습 프로세스에 STOP, CONT, TERM을 보내고 셸 작업과 서비스의 차이를 익힙니다.