터미널을 재설정하고 지우는 데 어떤 명령을 사용할 수 있습니까?


64

나는 명령을 사용하고있다 :

reset

터미널을 지우려면 나는 이것이 내가 해야하는 일이 아니라고 확신하지만. 이름에서 알 수 있듯이 Reset은 전체 터미널을 재설정합니다 (많은 것들을 변경). 내가 원하는 것은 다음과 같습니다.

기본적으로 명령을 사용하고 싶습니다 clear. 그러나 지우고 스크롤하면 여전히 이전부터 많은 양의 물건을 얻습니다. 일반적으로 이것은 문제가 아니지만 긴 총 로그를보고 있으며 가장 최근의 로그를보고 싶습니다. 나는 내가 사용할 수 more있거나 그런 것을 알고 있지만이 접근법을 선호합니다.


정확히 여기에서 요구되는 것에 많은 혼란이있는 것 같습니다. 질문을 전혀 명확히 할 수 있습니까? 터미널 스크롤 백 버퍼를 지우고 정확히 무엇을하려고합니까? (그렇다면 어떤 터미널 응용 프로그램을 사용하고 있습니까?)
quack quixote

1
Ctrl-L은 clear 프로그램 실행과 유사하게 bash (기본값은 emacs 모드)에서 화면을 지 웁니다.

IntelliJ IDE의 bash 터미널에서 이것을 테스트했습니다. 잘 작동하고 정확히 내가 원하는 스크롤을 지 웁니다. 감사.
이안 루이스

나는 이것이 죽음에 대한 답변임을 알고 있지만, 당신이 원하는 것은 clear && printf '\033[3J'입니다. 터미널을 재설정하지 않고 화면의 텍스트를 지우십시오. 이 게시물 참조 : superuser.com/questions/555554/…
jwd

답변:


57

스크롤 백 버퍼는 bash의 기능이 아니라 터미널 프로그램의 기능입니다. 어떤 터미널을 사용하고 있는지 말하지 않았습니다.

xterm을 사용하는 경우 ESC-c를 터미널에 에코하여 저장된 행을 지울 수 있습니다.

이것은 사용중인 터미널 프로그램에서 작동하거나 작동하지 않을 수 있습니다.

리눅스에서 이것은 아마도 작동 할 것입니다 :

echo -e '\0033\0143'

FreeBSD echo에서는 -e를 받아들이지 않기 때문에 시도해 볼 수 있습니다 :

printf '\033\143'

xterm을 사용하고 있습니다. 그러나 나는 당신이 무엇을 의미하는지 이해하지 못합니다. 글을 쓸까요 echo ESC-c?
sixtyfootersdude

2
@sixtyfootersdude : 아니요, 리터럴이 아닙니다 ESC. Wikipedia의 "이스케이프 문자"및 "제어 문자"기사를 읽으십시오. ESCASCII 문자 0x1B를 나타내는 데 자주 사용 ^V됩니다 Esc.
grawity

1
해서는 안됩니다. 솔루션에 원시 터미널 이스케이프 시퀀스 작성이 필요한 경우 솔루션을 다시 생각해야합니다. 나는 고양이 대신 "덜"을 사용합니다. "터미널 이스케이프 시퀀스"에 대해 배우고 싶다면 Google에서 도와 드리겠습니다.
Craig

2
@HaraldNordgren은 echo -e보다 표준 printf를 사용하는 것이 좋습니다.
Good Person

3
\0143대신에 c?
ruakh

51

각 작업에 적합한 도구를 사용하십시오.

  • clear터미널 창을 지우는 데 사용 합니다.

  • reset제어 순서에 의해 엉망이 될 때 터미널을 재설정하는 데 사용하십시오 .

  • 사용 cat당신이 한 장소에서 다른 장소로 데이터를 훨씬을 스트리밍 할 경우에만 중단 .

  • 출력 페이지 와 같은 less또는 호출기 프로그램을 사용하십시오 most.

  • tail -f /var/log/foo.log /var/log/bar.log여러 가지 다른 로그 파일을 보는 데 사용 합니다.

    • GNU으로 tail-F이 로그 파일에 공통이기 때문에 새 파일이, 그 자리에 나타납니다 심지어 다음 파일을 계속할 수 있기 때문에 옵션은 더 좋다.

14
이것은 실제로 내 질문에 대답하지 않습니다.
sixtyfootersdude

7
그래 읽을 파일을 고양이로 연결하지 말고 연결하기 위해 고양이 파일을 만드십시오. 파일을 읽는 데 더 적거나 더 많이 사용하면 같은 문제가 없습니다.
Rich Bradshaw

"고양이의 쓸모없는 사용"을 찾으십시오
galois

많은 사람들이 cat무언가를 읽는 데 사용하는 것에 반대 하지만 작은 파일의 경우 실제로를 사용하는 cat것보다 많은 의미가 있습니다 less. 파일이 터미널에 덤프되면 less다른 작업을하기 전에 닫지 않고 원하는 횟수만큼 파일을 다시 보거나 스크롤 할 수 있습니다.
GKFX

22

기술적 답변을 제공하기 위해 : reset처음부터 다시 연 것처럼 터미널을 다시 초기화하십시오. stty sane재설정없이 동일한 기능을 많이 수행합니다. 이것은 ^L(Ctrl + L) (irrc) 및와 동일 tput clear합니다. 이전 포스터 (@grawity)가 말 했음에도 불구하고 clear많은 줄 바꿈이 출력되지 않습니다. (xterm)을 사용하여 또는에 TERM정의 된대로 재설정을 보냅니다 . 이 명령과 동일합니다 .terminfotermcapgnome-terminalperl -e'print "\33[H\33[2J"'

전체 터미널을 재설정하는 것과 비교하여 버퍼를 지우려면 다음을 시도하십시오 tput reset. 그것은 해야한다 매우 빠르게, 그리고 당신이 원하는 것을 할. (실제로 파일을 읽어야하지만 less)

tput reset, 재설정을 위해 terminfo 값을 보냅니다. 내 터미널 (xterm)과 동일합니다. perl -e'print "\33c"'


1
나는 않았다 없는 말을 clear출력에게 뉴 라인의 무리. 난 그냥 같은 명령을 제공하는 대안 있기 때문에, 그것에 clear만 화면이 아니라 스크롤 백 버퍼를 지 웁니다. (적어도 PuTTY 또는 Konsole에서는 아닙니다.)
grawity

1
바로 그 이유 때문에, 많은 줄 바꿈을 인쇄하는 것은 실제로 명확한 대안이 아닙니다. 터미널이 명확한 신호로 무엇을 할 것인지 전혀 모릅니다. 터미널을 처리하는 방법을 알고있는 데이터베이스를 가지고있는 새로운 사람들에게 알리는 것이 좋습니다. 하나 clear는 신호 이름으로 신호에 매핑하는 것과 다른 하나만 신호에 매핑 reset하는 것입니다. 스크롤 백 버퍼가 지워집니다. reset다른 재미있는 일을하는 것보다 후자를 보냅니다.
Evan Carroll

1
sixtyfootersdude의 원래 질문에 따르면, 그의 스크롤 백을 재설정 clear하지 않습니다 . ( VTE 기반으로 ESC c작동 xterm하지만 PuTTY 및 Konsole에서는 작동하지 않습니다.) 원하는 reset것보다 더 많이 재설정하기 때문에 어느 것도 사용하고 싶지 않습니다 . (어떤 터미널을 사용하는지 모르지만 stty재설정 전후 비교하십시오 .)
grawity

2
내가 말했듯이, 그는 tput reset실제로 용어를 다시 초기화하지 않고 재설정 신호를 터미널에 보내는 원합니다 . "reset-초기화 문자열을 내보내는 대신 터미널의 재설정 문자열이있을 경우 출력됩니다 (rs1, rs2, rs3, rf). 재설정 문자열이 없지만 초기화 문자열이 있으면 초기화 문자열이 출력됩니다. 그렇지 않으면 리셋은 초기화와 동일하게 작동합니다. " 여기에 초기화 문자열이 있으므로 초기화 문자열이 실행되지 않습니다.
Evan Carroll

+1 : 제안을 위해 tput reset매우 느립니다 (와 동일 reset). printf '\033\143'훨씬 빠릅니다. printf 방법이 위험하거나 나쁜 이유가 있습니까?
sixtyfootersdude

9

또 다른 터미널은 iTerm2이며 스크롤 백을 지우는 데 사용되는 다소 이상한 이스케이프 시퀀스가 ​​있습니다. Bash 쉘에서는 다음과 같은 것을 사용합니다.

echo -ne '\033]50;ClearScrollback\a'

스크립트에서. 기본적으로 ESC 문자이고 " ]50;ClearScrollback"다음에 BEL 문자가 옵니다 .


1
CMD + K는 iTerm2에서 작동합니다. CTRL + K는 다른 많은 곳에서 작동합니다.
blockloop

나는 그것이 나 쉘 스크립트에서 iTerm2 스크롤 백 버퍼를 취소 할 수 있기 때문에이 솔루션을 좋아하면 같은 것들 clearreset하지 않을 것입니다. 그러나 이것은 실제로 질문에 대한 최선의 대답은 아닙니다. 이 경우 정답은 iTerm2의 command-K, 기타의 control-K 등과 같은 터미널 응용 프로그램이 제공하는 것입니다.
LS

8

아마도 모든 것을 지우는 가장 좋은 방법은 터미널 기능을 사용하는 것입니다.

  • Konsole : Ctrl+ Shift+ K보기 → 스크롤 백 지우기 및 재설정
  • 그놈 터미널 : 편집 → 재설정 및 지우기
  • PuTTY : Ctrl+ right-click→ 스크롤 백 지우기

이렇게하면 두 버퍼 모두 깨끗하게 지워지고 터미널 상태는 시작시의 상태 (을 사용하는 것과 같거나 같지 않을 수 있음)로 재설정됩니다 reset.


흠, 나는 그놈 아래에서 그것을 가지고 있지 않습니다 ...
sixtyfootersdude

@sixtyfootersdude : 나는 그것을 확신 입니다 난 그냥 정확한 메뉴를 (사용할 수 없습니다 모른다,이 gnome-terminal순간에 자신을) ... "도구"및 기타 메뉴에서 살펴 보자.
grawity

xterm에서 ctrl-middle 버튼-> "저장된 줄 재설정 및 지우기"
Craig

3
less -W + F foo.log

+F'추적'을위한 것입니다. 비슷 tail -f하지만 다시 스크롤 할 수 있습니다.

모든 vte 기반 터미널 (GNOME, Xfce, Roxterm) 및 KDE Konsole을 사용하면 스크롤 휠을 사용하여 내부를 스크롤 할 수 있습니다 less. 나는 매우 확신합니다.


대안 clear:

펄 -e '인쇄 "\ n"x512;'

xterm -e 'tail -f foo.log'

3

Mac OS X Terminal.app에서 :

보기-> 스크롤 백 지우기 (또는 command- K)


@Rohit 경우 문제는 맥 OS X Terminal.app에 대해 특별히 한 후, 예, 이것은 좋은 대답이다. 그러나 원래의 질문은 모호하고 있으며, 어떤 터미널과 OS가 사용 중인지에 관해 가장 잘 알 수 있습니다.
David J.

2

"배쉬"문제가 아닙니다. 사용하는 터미널에 따라 다릅니다. 예를 들어, Macbook과 함께 "iterm2"를 사용하여 원격 Linux 시스템을 연결합니다. "command + K"를 사용하여 버퍼를 청소하거나 메뉴에서 "Edit"-> "Clear Buffer"를 선택할 수 있습니다.


1

PuTTY를 실행할 때 콘솔 화면과 스크롤 백 버퍼를 지우려면 다음과 같이하십시오.

echo -en "\ec\e[3J"

이것은 실제로 독립적으로 작동하는 2 개의 "Esc"시퀀스입니다.

# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"

# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"

를 사용 echo -en "\ec"하여 터미널을 재설정하면 다른 터미널 설정 중 일부가 변경 될 수 있습니다. "재설정"대신 다음을 수행 할 수 있습니다.

# position the cursor to "Home" (Top Row, First Column)
echo -en "\e[H"

# Erase down: clear the screen from the cursor down to the bottom of the screen.
echo -en "\e[J"

# Note: this is supposed to clear the screen and position the cursor to home,
# but it didn't work like that for me. It cleared the entire screen (above and 
# below the cursor), but left the cursor at its last position.
echo -en "\e[2J"

# putting everything together
echo -en "\e[H\e[J\e[3J"

이것을 쉘 스크립트에 넣을 수 있으며 정상적으로 작동합니다.


일부 시스템 종속성이있는 경우 :

PuTTY (릴리스 0.60)와 함께 PuTTY Connection Manager (버전 0.7.1 베타 (빌드 136))를 사용하고 있습니다.

타자:

echo \"$TERM\"; /bin/sh --version

보고서 :

"xterm"
GNU bash, version 4.1.2(1)-release-(x86_64-redhat-linux-gnu) ...

1

FreeBSD에서 하드웨어 TTY의 화면 버퍼를 정리하려면 매개 변수 -C와 함께 "vidcontrol-시스템 콘솔 제어 및 구성 유틸리티"를 사용할 수 있습니다. 히스토리 버퍼를 지우십시오.

vidcontrol -C

이 명령은 현재 보이는 것보다 현재 콘솔의 모든 화면 버퍼를 비 웁니다. 먼저 '지우기'를 원할 수도 있고 그렇지 않을 수도 있습니다.


0

로그 파일에서 가장 최근 항목을보고 있는지 확인하려면 사용 중인 것으로 가정하는 / 대신 tail 을 사용하는 것이 가장 좋습니다 .clearcat


실제로 tail -f (연속 로그)를 사용하고 있지만 때로는 수천 줄을 뱉어 내기 때문에 뒤로 스크롤하는 것이 중요합니다. 그러나 내가 더 오래된 로그로 다시 울리지 않는다는 것을 아는 것이 좋습니다.
sixtyfootersdude

0

흠. 나는 당신이 곤솔을 실행한다면 운이 없다고 생각합니다. 예전에는 "스크롤 백 지우기"만 할 수있었습니다. Konsole은 더 이상 그렇게 할 수 없습니다. 또한 재설정해야하므로 실행중인 모든 프로그램이 종료됩니다. 새로운 터미널 프로그램이 필요합니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.