GNU 화면 스크롤 백 버퍼를 파일로 복사 (확장 하드 카피)


188

GNU Screen 스크롤 백 버퍼를 파일로 쉽게 복사하는 방법은 무엇입니까? 즉,보다 강력한 '하드 카피'명령 버전입니까?

GNU 화면에서 " Ctrl+ A Esc"를 사용하여 스크롤 백 버퍼에 들어갈 수 있습니다 . 그런 다음 전체 버퍼를 표시하고 " Ctrl+ A Ctrl+ ]"를 사용 하여 Emacs 버퍼 에 붙여 넣어 파일에 저장할 수 있습니다.

그러나 이것은 지루합니다. 화면의 보이는 부분에 대해 '하드 카피'와 같이 단순히 스크롤 백 버퍼를 파일로 복사하는 Screen 명령이 있습니까?

답변:


284

스크롤 백 버퍼의 전체 내용을 파일에 쓰려면 다음을 입력하십시오.

Ctrl+ A그리고 : 명령 모드로 이동

hardcopy -h <filename>

의 이전 버전에서는 screen방금 수행 hardcopy -h하면 파일에 기록됩니다 -h. 이것은 버전 4.2.0에서 수정되었으므로 현재 창 번호는 어디에 hardcopy -h기록합니다 .hardcopy.NN


1
파일은 홈 디렉토리에 저장됩니다. 적어도 나에게는 그랬습니다. 대답 주셔서 감사합니다, btw!
Ritesh

2
@allrite : $ PWD에 저장됩니다 (전체 경로를 제공하지 않으면) 특별한 동작이 없습니다.
Pushpendre

9
예, 그러나 시작한 $ PWD 화면에 저장됩니다 . 아니 화면 세션의 $ PWD있다.
seumasmac 1

7
스크롤 백 버퍼가 길고 많지 않은 경우 처음 10 ~ 100 줄이 비어 있고 내용이 끝에 있기 때문에 저장된 파일이 비어있는 것처럼 보일 수 있습니다.
Terry Brown

3
하드 카피가 저장되는 위치에 대한 추가 참고 사항 : 디렉토리로 이동 한 다음 screen -r기존 세션에 다시 연결하는 데 사용 하는 경우 하드 카피는 화면 내부의 활성 디렉토리 또는 사용하기 전에 있던 디렉토리에 저장되지 않습니다 screen -r. 처음 화면 세션을 시작할 때 있던 디렉토리에 저장되는 것 같습니다. hardcopydir 명령으로 이를 변경할 수 있습니다 .
Matthias Fripp

25

를 눌러 Ctrl+ A : bufferfile의 /tmp/somefile.txt ENTER 다음 Ctrl+A >

버퍼의 현재 내용을 명명 된 파일에 기록합니다.


이 작업을 시도했는데 "ctrl-a>"에 "Nothing happen"가 표시됩니다. 첫 번째 단계는 "버퍼 파일이 이제 '/tmp/foo.txt'"라고 말했지만 해당 파일을 작성하지 않은 것 같습니다.

1
Ctrl + A [를 사용하여 화면 버퍼에 무언가를 복사 했습니까? 버퍼가 비어있는 것 같습니다. 전체 스크롤 백 버퍼를 복사하지 않으며 Ctrl + A를 사용하여 선택한 부분 만 [
Roshan

2
아, ctrl-a [

12

TL; DR : ^A:writebuf <filename>

OP는 ^ A [을 수행 할 때 얻는 버퍼의 선택된 부분을 사용하고 시작과 끝으로 공백을 사용하여 텍스트를 선택한 다음 ^ A]를 사용하여 붙여 넣기 대신 선택한 결과 부분을 저장하는 방법을 원합니다. 버퍼를 파일로

이것은 효과가 있었다 :

^A:writebuf <filename>

참고 : writebuf에서 하나의 'f'


1
아니 아니. OP는 선택된 부분 만이 아니라 ENTIRE 버퍼를 저장하려고합니다. - OP

2
쥐! 이만큼 그리워
케빈 멀렛

4
이 게시물은 여전히 ​​유용합니다. 잘 했어.
저스틴 E

1
MacOSX 버전의 화면 에서이 작업을 수행하려면 abolute 경로 (예 : /Users/user1/path/to/file.txt)를 사용해야한다는 것을 알았습니다.
jhrf

6

시도 hardcopy -h전체 버퍼를 포함 할 수 있습니다.


2
이것은 단지 ~ / -h 파일에 하드 카피를 만듭니다

2
@ barrycarter : 최신 버전에서는 변경되었을 수 있습니다. 화면 4.03.01부터 현재 창 번호가있는 곳에 hardcopy -h씁니다 . hardcopy.NN
Keith Thompson

4

이것은 나를 위해 일했다 :

편집 모드 ( ~)를 입력하고 다음을 입력하십시오.

:hardcopy -h buff_file

거대한 파일을 만들었는데 그 중 98 %는 비어 있었지만 내 로그는 남은 2 %로 완전히 표시되었습니다.


-2

Ctrl+ A, :'log on'명령을 실행하십시오.

또는 .screenrc 파일에서 'deflog on'으로 기본값으로 설정하십시오 .


2
나는 그 명령을 실행 한 후에 모든 것을 로깅하기 시작한다고 생각합니다. 나는 모든 것을 기록하고 싶지 않다 (너무 장황하다). 스크롤 백 버퍼를 파일로 캡처하고 싶습니다.

-3

Ctrl+ A, H.

즉, 하드 카피 파일로 현재 화면을 저장, 예를 들어, 화면 0에 대한 hardcopy.0가는 것보다 더 빠른 방법이 될 것 같다 Ctrl+를 A, :그리고 입력 하드 카피 명령을 사용합니다.


3
불행히도, 그것은 스크롤 백 버퍼가 아닌 화면의 VISIBLE 부분 만 저장합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.