실제 터미널 화면 지우기


382

clear터미널 에서 명령을 사용하면 화면이 지워 졌다고 생각하게됩니다. 마우스를 사용하여 스크롤해도 이전 명령의 출력을 볼 수 있습니다. 이것은 쓰나미로 쓰러 질 때 삶을 어렵게 만듭니다.

인터넷에서 찾을 수있는 다양한 솔루션 (이스케이프 코드 등)은 clear 명령이 이미 수행 한 것의 변형 일뿐입니다.

그렇다면 리눅스에서 실제로 터미널의 내용을 지우려면 어떻게해야합니까?


44
나는 이것을 "프로그래머가 일반적으로 사용하는 소프트웨어 도구"(FAQ에서 유효한 것으로 언급)로 분류하고 있습니다.
Autodidact

5
당신이 정말로 요구하는 것은 "터미널의 스크롤 백 버퍼를 어떻게 지울 수 있습니까?"입니다. 쉘 (Bash) 또는 Ubuntu와 독립적입니다.
추후 공지가있을 때까지 일시 중지되었습니다.

아마도 AskUbuntu가 올바른 장소이기 때문에 아마도 @ spiderplant0입니다. 이것이 요청되었을 때 존재하지 않았으므로 그렇지 않은 경우에도 주제가 아닌 것으로 마감되었습니다.
jcollum

1
@Dennis가 지적한 것처럼 Ubuntu 또는 bash에만 영향을 미치는보다 일반적인 질문입니다. "실제로 Ubuntu bash 화면 지우기"-> "실제로 터미널 화면 지우기"주제를 변경했습니다
Ra_

Bash를 실행할 수있는 다양한 터미널 유형이 있습니다 ( " bash 터미널 " 이라는 용어 는 의미가 없습니다). "지우기"는 모든 것에 적용 할 수있는 것은 아닙니다. 때로는 가장 가까운 근사치는 종이를 찢고 원하지 않는 비트를 버리거나 파쇄 / 연소 / 파괴하는 것입니다.
Toby Speight

답변:


500

다음 명령을 사용하여 단순히 새 줄을 추가하는 대신 명확한 화면을 만드십시오 ...

printf "\033c"

예, bash 프롬프트의 'printf'입니다.

그래도 별명을 정의하고 싶을 것입니다 ...

alias cls='printf "\033c"'

설명

\033 == \x1B == 27 == ESC

따라서 이것은 <ESC>c터미널을 재설정하기위한 VT100 이스케이프 코드가됩니다. 다음 은 터미널 이스케이프 코드에 대한 추가 정보입니다.

편집하다

다른 몇 가지 방법이 있습니다 ...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

위의 내용은 KDE 콘솔 (Konsole)에서 작동하지 않지만 희망이 있습니다! 다음 명령 시퀀스를 사용하여 화면과 스크롤 백 버퍼를 지 웁니다.

clear && echo -en "\e[3J"

또는 KDE에서 다음 별칭을 사용하십시오.

alias cls='clear && echo -en "\e[3J"'

여기서 스크롤 백 지우기 명령을 받았습니다 .


4
이것은 실제로 터미널에 따라 다릅니다. "\033c"이다 ESC c"전체 리셋 (RIS)"를위한 VT-XXX 이스케이프 시퀀스가있다. 요즘 사람들이 실제로 사용하는 거의 모든 터미널은 VT와 호환되지만 이상한 터미널을 사용하는 경우에는 작동하지 않을 수 있습니다. TERM이 올바르게 설정되어 있다고 가정하면 @ vpit3833의 대답이 더 효과가 있습니다.
Laurence Gonsalves

2
printfBash 내장입니다 (이것은 별도의 바이너리이기도하지만 내장이 우선하며 대부분의 현대 쉘에는 printf)이 있습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

2
@ SDX2000 OK ... 우분투를 지정했다는 것을 알고 있으며 모든 "현대"터미널 에뮬레이터에서 비슷하게 작동한다고 가정했습니다. 처음에 MAC 터미널에서 테스트했지만 재설정되지 않았지만 Centos Linux에서는 재설정되었습니다.
18

12
echo -en "\ 033c"
Jonathon Reinhart

2
몇 년 후 $ 0.02이지만 CU의 학생입니다. 운영 체제 교수에게 문의하여 이것이 ANSI 이스케이프 시퀀스의 예라고 말했습니다. en.wikipedia.org/wiki/ANSI_escape_code 이것은 대역 내 시그널링의 예입니다.
abgordon

216

시도하십시오 reset. 터미널 화면을 지우지 만 화살표 나 키 바인딩을 통해 이전 명령에 액세스 할 수 있습니다.


3
감사! 그러나 프롬프트를 포함하여 모든 것이 지워집니다. 이 작업을 수행하지 않는 솔루션에 대한 내 답변을 참조하십시오.
Autodidact

5
@ SDX2000 둘 다 프롬프트를 지우고 셸에서 새 프롬프트를 생성합니다. 재설정해야하는 한 가지 단점은 조금 느리지 만 (아마도 ESC c를 방출하는 것 이상의 기능을 수행하기 때문에) 더 휴대하기 쉽다는 것입니다.
Laurence Gonsalves

@Laurence는 설명을 주셔서 감사합니다 ... 재설정을 시도했지만 너무 느려서 다른 모든 메시지와 함께 프롬프트가 지워 졌다고 가정합니다. ESC c우분투에서 사용하는 터미널 이외의 터미널은 사용하지 않을 것이므로 여전히 사용하는 것이 좋습니다 . 비록 reset나는 등 직렬 포트를 통해 원격 시스템을 디버깅하고 때 편리 언젠가 올 수있다
독학

1
@ SDX2000 재설정은 또한 무언가를 죽이거나 이진 파일로 인해 터미널이 심하게 엉망이되어 용어가 맹 글링 된 상태로 남아있는 경우에도 편리합니다. 입력 창이 아닌 프롬프트가 표시되는 상태가 된 후 Enter 키를 누르면 새 프롬프트가 아래 프롬프트가 아닌 이전 프롬프트 옆에 표시됩니까? 리셋 수정. 그것이 실제로 내가 사용했던 전부입니다 ... 스크롤 백 버퍼를 지울 필요가 없었습니다.
Laurence Gonsalves

4
관련된 1 초 지연 reset은 견딜 수 없습니다.
Jonathon Reinhart

62
tput reset

그 트릭을 할 것입니다!


2
평범한 것보다 훨씬 빠르게 실행 reset되지만 여전히 작업을 수행합니다!
Ponkadoodle

1
단순한 것보다 빠름 reset
l2aelba

이것은 항상 그것을 삭감하지는 ​​않았지만 명백한 것으로
InterLinked

7

내가 읽은 답변 중 PuTTY에서는 효과가 없으므로이 기사 에 대한 의견을 찾았습니다 .

연결 설정에서 "창-> 동작"아래에 "시스템 메뉴가 ALT에만 나타납니다"라는 설정이 있습니다. 그런 다음 Ctrl + L, ALT, l (소문자 L)은 화면을 스크롤 한 다음 스크롤 백 버퍼를 지 웁니다.

(우분투 서버에 연결하고 있기 때문에 OP와 관련이 있지만 서버가 실행중인 것과 관계없이 분명히 관련이 있습니다.)


@Dennis Williamson의 3 살짜리 의견 이이 답변으로 이끌었습니다.
TecBrat

또한, 퍼티의 "창"설정에서 당신이 "에 ALT-스페이스 시스템 메뉴가 나타납니다"당신이 신속하게 할 수있는 활성화 주어진 CTRL+L다음 ALT+Space, U터미널 창은 다음 실제의 스크롤 백을 재설정 첫번째 지 웁니다.
Pierre Voisin

6

다음 링크는 해당 별칭을 영구적으로 만드는 방법을 설명하므로 계속 입력하지 않아도됩니다.

/ubuntu/17536/how-do-i-create-a-permanent-bash-alias

해당 링크에 자세한 단계가 있습니다.

  1. vim ~ / .bashrc 또는 gedit ~ / .bashrc 또는 원하는 텍스트 편집기
  2. 파일의 맨 아래에 별명 cls = 'printf "\ 033c"'를 넣으십시오.
  3. 저장하고 종료
  4. . ~ / .bashrc (그리고 네 사이에 공백이 있어야합니다.)
  5. 이제 모든 것이 작동하는지 확인하십시오!

나는이 정보를 전달하는 것에 대해 아무런 신용도하지 않습니다.



4

내가 가장 좋아하는 인간 친화적 명령은 다음과 같습니다.

reset

xterm 및 VT100에서 테스트되었습니다. 또한 비정상적인 프로그램 종료 후 도움이됩니다. 명령 버퍼를 유지하므로 위쪽 화살표는 이전 명령을 순환합니다.

건배 : D


3

새 줄을 인쇄하는 솔루션이 많이 지원되지 않는다는 것을 알고 있지만 다른 모든 방법이 실패하면 왜 그렇지 않습니까? 특히 누군가 다른 사람이 화면을 볼 수 있지만 키로그를 볼 수없는 환경에서 작동하는 경우. 잠재적 솔루션 중 하나는 다음과 같은 별칭입니다.

alias c="printf '\r\n%.0s' {1..50}"

그런 다음 화면의 현재 내용을 "지우려면"(또는 숨기 c+Enter십시오) 터미널에 입력 하십시오.



-2
echo -e "\e[3J"

이것은 리눅스 머신에서 작동


4
답변 해 주셔서 감사하지만 다른 답변보다 추가 가치를 제공하는 것이 좋습니다. 이 경우 다른 사용자가 해당 솔루션을 이미 게시 했으므로 귀하의 답변은 추가 가치를 제공하지 않습니다. 이전 답변이 도움이 되었다면 동일한 정보를 반복하는 대신 투표해야합니다.
Toby Speight

-53

이 앱을 컴파일하십시오.

#include <iostream>
#include <cstring>

int main()
{
  char str[1000];
  memset(str, '\n', 999);
  str[999] = 0;
  std::cout << str << std::endl;
  return 0;
}

33
죄송하지만이 방법이 최선의 방법은 아닙니다. 999 개의 줄 바꿈을
뿌리

2
실제로 이것에는 어떤 가치가 있습니다. 일부 터미널에서는 다른 방법으로 화면을 지우면 기록이 사라지고 뒤로 스크롤 할 수 없습니다 .999 줄을 사용하면 손가락이 피곤해집니다. 가난한 사람.
JoshuaDavid

@JoshuaDavid 문제의 요점은 OP가 삭제 후 뒤로 스크롤 할 수 없다는 것 입니다.
Socowi

@Socowi 내 의견은 OP가 아닌이 -50 등급의 답변을 다루고 있습니다. 하지만 네 말이 맞아!
JoshuaDavid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.