화면 내부 스크롤 또는 출력 일시 정지


383

작업중인 서버를 관리하면서 명령 줄 작업에 화면 을 사용 합니다. 나는 보통 작은 명령 (대부분 파일 시스템 작업)을 실행하지만 때로는 더 광범위한 작업 (DBA와 같은)을 실행하기도합니다.

이러한 작업 의 결과 는 나에게 중요합니다. 내 작업에 Ubuntu와 OS X (터미널 Windows 모두)를 사용하지만 화면을 사용해야하므로 스크롤을 사용할 수 없으므로 긴 출력 (선택의 500 행 테이블 생각)이 보이지 않습니다. 마우스 휠은 의문의 여지가 없습니다.

"스크롤은 보이지 않습니다."라고 말하면 다음과 같습니다.

화면을 사용하는 동안 Mac OS X에서 스크롤하는 동안 맨 위로

두 가지 옵션에 대해 생각하고있었습니다.

  1. 특정 명령의 출력을 일시 중지 ( paginate 생각 )하십시오. 출력이 시작되면 무슨 일이 일어나고 있는지 읽은 다음 "Enter"를 누르면 더 이상 아무것도 표시되지 않을 때까지 출력이 계속됩니다.

  2. 화면 내부를 스크롤하십시오. 그러나 이것이 가능한지 모르겠습니다.

물론 이러한 옵션이 실제로 가능한지 모르겠습니다 . 그렇다면 어떻게 달성 할 수 있습니까? 다른 대안들도 잘받을 것입니다.

답변:


526

화면에는 터미널 멀티플렉서이므로 여러 버퍼 를 처리해야하므로 자체 스크롤 버퍼가 있습니다.

더 좋은 방법이있을 수도 있지만 "복사 모드"를 사용하여 스크롤하는 데 익숙합니다. 붙여 넣기 명령도 필요하지만 화면 자체를 사용하여 텍스트를 복사하는 데 사용할 수 있습니다.

  • 화면 접두사 조합 ( 기본적으로 C-a/ control+ A)을 누른 다음를 누르십시오 Escape.

  • 화살표 키 ( )를 사용하여 위 / 아래로 이동하십시오 .

  • 완료되면 q또는 Escape을 누르 거나 스크롤 버퍼의 끝으로 돌아갑니다.

(만약 대신에 q또는 Escape당신이 공격 Enter하거나 Return, 텍스트 복사 선택하고 타격 할 것이다 다음 커서를 이동 Enter하거나 Return두 번째 시간이 복사됩니다. 그런 다음에 붙여 넣을 수 있습니다 C-a다음에 ].)

물론, 당신은 항상 사용할 수 있습니다 moreless일부 명령에 대해 충분히있을 수 있습니다 일반적으로 사용되는 두 호출기를.


5
또한 q를 누르면 아무 것도 복사하지 않고 복사 모드가 종료됩니다 (단 하나의 버튼 누름). 이것은 vi 설명에있을 수 있지만 이제 링크가 끊어졌습니다.
Nathanael Farley

3
또한 [Esc]를 눌러도 복사 모드를 종료합니다.
Sopalajo de Arrierez

7
페이지를 올리는 방법이 있습니까?
Sungkuk Lim

10
스크롤 버퍼는 페이지 위 / 아래로 스크롤하기위한 Cb 및 Cf와 같은 vi 같은 명령을 지원하는 것 같습니다.
Touko

3
복사 모드에서 내 PageUp 및 PageDown 버튼이 작동합니다. 먼저 누르면 한 줄만 이동하지만 그 후에는 보통처럼 페이지 이동합니다.
엘리야

171

njsg에서screen 지적한대로 버퍼를 사용 하는 것이 좋습니다. 화면 내 xterm termcap 정보에서 대체 텍스트 버퍼를 비활성화 할 수도 있습니다. 비활성화되면 스크롤 막대 (및 마우스 휠)를 사용하여 위아래로 스크롤 할 수 있습니다.

에 추가하십시오 ~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

자세한 내용은 여기를 참조 하십시오 .


1
Ctrl + A, :를 입력하여 스크롤 백 제한 설정, "scrollback 10000"또는 원하는 숫자 값 입력
lobi

2
이를 사용하면 Linux 터미널의 일반적인 단축키 (shift + pg up / down home / end)도 작동합니다.
tokland

5
이 팁만으로도 화면을 사용하여 재고 할 수 있습니다 ...
Fish Monitor

5
+1 허용 된 솔루션보다 더 우아합니다.
Ryan Yoosefi

9
screen당신이 그것을 시작한 이래로 당신에게 주어진 결과를 제공합니다. 즉, 다른 곳에 재 연결하는 것은 당신이 위로 스크롤하여 이전에 일어난 일을 볼 수 없다는 것을 의미합니다. 그러나 여전히 허용 된 답변의 솔루션을 사용하여 이전 출력을 검색 할 수 있습니다-마우스 휠을 다시 사용할 수 있습니다.
Phil

28

이 모든 답변은 스크린 세션 내에서 탐색하는 방법을 다루었지만 screen 명령에는 내장 -L매뉴얼 기능에 따라 매뉴얼을 읽는 인수에 따라 인수를 통해 파일에 모든 것을 저장합니다 .

-L은 창에 자동 출력 로깅을 설정하도록 화면에 지시합니다.

그래서 당신은 할 수 있습니다 :

screen -L -S testscreen

그리고 그것은 가지 파일을 만듭니다 screenlog.#(가) 여기서 #0부터 시작하는 화면의 숫자입니다.

이것은 많은 장점을 가지고 있으며 나에게 가장 중요한 장점은 다음과 같습니다.

  1. 나중에 참조 할 수 있도록 프로젝트 폴더에 로그 파일을 저장할 수있는 이후로 수행 한 작업을 기록합니다.
  2. 프로세스를 비활성 및 수동으로 모니터링 할 수 있습니다.
    • tailf화면에 연결하지 않고 실시간으로 진행 상황을 모니터링하는 데 사용 합니다.
    • 사용 grep로그에 특정 용어에 대한 확인 및 알림 (이메일, 팝업, VoIP를, 등)을 생성 할 수 있습니다. 적극적으로 보지 않고 여러 화면에 적용 할 수 있습니다.

1
-L화면 플래그를 알지 못했습니다 . 매우 유용합니다! +1
Kredns

1
더 추가하고 싶을 screenlog.#때는 screen명령 을 실행하는 폴더에 생성됩니다
Lê Quang Duy

3

more예를 들어 다음과 같이 내용을 파이핑하여 기본 페이징을 얻는 데 성공했습니다 .

ls -l | more

또는 구문 강조와 같은 사용 사례에 대해 컬러 출력을 원할 경우

ls -l --color=always | more

결과적으로 한 번에 한 화면 씩 쉽게 페이지를 넘길 수 있습니다. @uther의 수정을 시도 ~/.screenrc하지 않았지만 마우스를 사용할 수있을 때 지속적인 솔루션으로 선호되는 것 같습니다.

이것을 시도하려면 이 BusyBox 에뮬레이터 로 이동 한 다음 ...

cd ~/bin
ls -l --color=always | more

스페이스 바를 사용하여 ls -l명령 결과를 페이징 하거나 Enter 키를 사용하여 결과를 한 줄씩 이동하십시오.

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