터미널에서 출력을 남기지 않고 상단을 어떻게 종료합니까?


30

top종료 방식과 유사하게 종료하려면 어떻게해야합니까 less, 즉 화면에 출력이 남지 않습니까?

이것은 내가 가진 버전입니다.

procps-ng version 3.3.9

htop? 와 같은 대안을 사용하는 것은 어떻습니까?
DarkHeart

답변:


48

이렇게 시작하면 ...

top && clear

... q로 상단을 종료하면 화면이 사라집니다.

이것은 다음과 같이 작동합니다 less.

tput smcup ; top ; tput rmcup

( 명령이 실행 smcup되는 보조 화면으로 전환하고 top종료 top rmcup하면 다시 일반 화면으로 전환)


당신은 별칭 상단 명령 (즉을 할 수있는 I 영구 배쉬 별칭을 만들려면 어떻게해야합니까? )


3
clear적어도 xfce4-terminal 및 QTerminal에서 스크롤 백 버퍼의 마지막 화면을 제외한 모든 화면을 지우는 것처럼 보입니다 (이 경우 상단 화면을 그대로 두십시오). 이 tput답변은 특히 다음과 같은 별칭에서 top
효과적

2
빠른 수정을 위해서는 Ctl + L을 잊지 마십시오.
jpaugh

아, 흥미 롭습니다. 왜 less마지막 출력이 버퍼에서 완전히 사라 졌는지 궁금 합니다.
Monica와 가벼운 가벼움 경주

다른 제안들 : 1. 훨씬 뛰어나지 만 내장되어 있지 않다 htop. 2. 그리고 명령을 함께 묶어 매번 수동으로 연결할 필요가 없다.
flith

@flith 다른 사용자의 답변을 훔치지 않을 것입니다 ;-)
Rinzwind

31

아이러니하게도 1 , 이것은 간단히 동작입니다 top. 3.3.8에서는 top화면 이 지워 졌지만 과거 또는 이후 버전에서는 그렇지 않았습니다. Red Hat 버그 # 977561 참조 :

화면 지우기는 널리 사용되는 일부 터미널 응용 프로그램에서 생성 된 SIGWINCH 신호로 '톱'도구의 범람을 방지하기 위해 Jim Warner ( '톱'도구 작성자)가 도입 한 터미널 조작 변경의 간접적 인 결과입니다. 홍수 문제를보고 한 사람은 저였으며 문제를 해결하기 위해 최선을 다했으며 8 가지 별도 커밋 형태로 문제에 대한 해결책을 발표했습니다. 화면 지우기를 도입 한 커밋에는 'dedaf6e1a81738ff08ee8e8523871e12f555ad6d'해시가 있습니다.

버그 보고서로 인해 Jim 은 3.3.9에서 출력을 지우지 않도록 수정했습니다 .

topAFAICT를 제어 할 수있는 옵션이나 구성 설정이 없습니다. 이것은 완전히 하드 코딩 된 동작입니다. https://gitlab.com/procps-ng/procps/issues/ 에서 기능 요청을 제출할 수 있습니다 .

그때까지 Rinzwind suggested를clear 수동으로 좋아 하거나 steeldriver suggests와 같이 사용할 수 있습니다.tput


흥미롭게도, 위에서 언급 한 커밋 은 강철 드라이버가 제안한 명령에 대한 훌륭한 설명을 가지고 있습니다.

여러 터미널 에뮬레이터에 사용되는 스크롤 백 버퍼는 일부 크기 조정 작업을 수행 한 사용자에게는 불편할 수 있습니다. 상단의 디스플레이를 올바르게 렌더링하기 위해 추가 키 입력이 자주 필요합니다.

많은 수렴 후 두 개의 스크롤 정보 버퍼를 비활성화 / 복원하는 효과가있는 두 개의 terminfo 문자열을 발굴했습니다. 그들은 '컵을 사용하여 프로그램을 시작 / 종료'하는 문자열 제목 아래에 잘 숨겨져 있습니다. 'cup'은 tty의 커서 주소 지정 기능을 처리합니다.

우리는 당신이 그들을 부르거나 그들이 일을 끝내는 한 그들이 말하는 것을 상관하지 않습니다. 그리고 이것들은 정말로! 그러나 부작용이 있으며 그중 일부는 유익한 것으로 간주 될 수 있습니다.

  • enter_ca_mode / smcup / ti는 스크롤 백 버퍼링을 비활성화합니다 (그리고 그것이 우리가 항상 기대했던 것입니다)

  • exit_ca_mode / rmcup / te는 스크롤 백 버퍼를 복원합니다 (이전 프로그램의 최종 결과와 다른 기존 사전 화면 내용도 복원 함) (마지막으로 렌더링 된 화면을 건드리지 않은 상태)

... tput smcuptput rmcup명령에 해당 합니다.


1 필수 xkcd.


흥미롭게도 BSD top (예 : MacOS)도 터미널을 깨끗하게합니다
Digital Trauma

15

당신이 덜 찾고있는 행동은 htop이라는 대안에 내장되어 있습니다. 다음과 같이 설치할 수 있습니다.

sudo apt-get install htop

특히, Htop을 닫으면 원래 화면 내용 보존을 시작하기 전에 대체 화면 모드로 전환됩니다. 또한 procps의 top에 비해 다양한 다른 기능이 향상되었습니다. 설치되면 일반 사용자로 실행할 수 있습니다.

htop

Plus htop는 매우 다채롭고 마우스 지원 등을 추가합니다.
WinEunuuchs2Unix

4

당신은 사용할 수 있습니다 watch:

watch top -b

기본적으로 2 초마다 업데이트됩니다 -n1.이 동작을 변경하려면 1 초 동안 사용하십시오 . 종료하려면 평상시 대신 + 를 watch누르십시오 .CtrlCQ

또 다른 접근법은 다음과 같이 새 터미널 창을 여는 것입니다 xterm.

xterm -e top

이 동작합니다 정확히 같은 top일반적으로 수행, 윈도우가 닫히고 당신이 종료 top와 함께 Q물론 당신이에서 시작 터미널에는 출력을 남기지 않습니다. &이 명령의 끝에 추가 하여 백그라운드에서 시작한 후 즉시 터미널을 해제하십시오.


1

Rinzwind의 답변에서 알 수 있듯이 clear명령 top은 화면에서 출력을 지 웁니다 .

종료 후 + 를 top사용 하여 화면 에서 출력 을 지울 수도 있습니다 . 두 명령을 모두 수행 한 후에도 여전히 화면을 위로 스크롤하여 이전 출력 을 볼 수 있습니다 .CtrlLtoptop

top출력을 다시 스크롤 할 수 없도록 화면을 실제로 지우려면 다음 reset명령을 사용하십시오 .

top && reset

완전히 새로운 세션을 "새롭게"보이게하는 또 다른 옵션은 "ASCII 스플래시 화면"(있는 경우)을 실행하는 것입니다. 내 경우에는 다음을 실행합니다.

top && reset && now && screenfetch

지금 재설정 splash.png

  • now스크립트는 날씨, 달력 ( cal) 및 toilet멋진 시간을 말합니다.
  • screenfetch 우분투 로고와 기계 통계를 그립니다.

1
일반적으로 파일에 같은 줄이 있고 여러 번 실행하면 불필요하게 확장 할 수 있기 때문에 필요없이 .bashrc 정기적으로 다시 실행하지 않는 것이 좋습니다 . 또한 전화 하는 것은 표준 동작이 아닙니다 (멋진 것처럼 보이지만). 예를 들어, 내가 다시 실행하면 아무런 일도 일어나지 않습니다. export PATH=...:$PATHPATHneofetch.bashrc.bashrc
PerlDuck

CTRL + L과 동일 clear하게 동작 하지 않음 : for i in {1..200}; do echo "line $i"; done두 개의 다른 새 창에서 시도하십시오 . 그런 다음 CTRL+Lwindow1을 누르고 clearwindow2를 입력하십시오 . 이제 두 창에서 다시 스크롤하십시오 (마우스 휠). -창에서는 CTRL+L모든 행을 볼 수 있지만 (스크롤 버퍼에 따라)-창에서는 화면 clear만 뒤로 스크롤 할 수 있습니다. 즉 , 스크롤 백 버퍼를 지우고 $ window_height 번을 누르는 것과 비슷합니다 (일명 줄 바꿈). clearCTRL+LENTER
PerlDuck

1
@ PerlDuck neofetch은 잘 잡히지 만 파생 된 파생 상품 screenfetch입니다. 이중 부팅이 있고 Windows Bash의 스플래시 화면이 다르기 때문에 우분투에 있다는 것을 상기시키기 위해 사용합니다. 나는 .bashrc참고를 할 것이다 . 에 관해서 clearCtrl+ L나의 점은 그들이 모두 휴가한다는 점에서 비슷했다 top스크롤 출력 백 버퍼.
WinEunuuchs2Unix 23

2
나는 모든 사람들이 서로 다른 것을 가지고 있다고 생각합니다 .bashrc. 시도해보십시오 curl wttr.in/Edmonton?0. curl wttr.in/:help도움을 얻기 위해 사용하십시오 . /etc/update-motd.d/스크립틀릿에 비슷한 호출이 있으므로 콘솔 또는 ssh에서 로그인 할 때 정보를 얻습니다 (모든 터미널 창에 해당하는 것은 아님). 당신이 그것을 좋아한다면, --silent --max-time 3컬 통화에 추가 하여 인터넷이 느린 경우 영원히 걸리지 않습니다.
PerlDuck

@ PerlDuck curl wttr.in/Edmonton?0는 굉장합니다! 정말 고맙습니다. 나는 이후에 그것을 집어 넣은하려고합니다 toilet:) 내 시작 화면에 시간 표시
WinEunuuchs2Unix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.