그놈 터미널 내용을 ANSI 이스케이프 코드로 저장하는 방법?


9

VT100 터미널은 -를 사용하여 이스케이프 코드가있는 터미널 내용을 파일저장 하는 비교적 간단한 방법입니다 .Metap

XTerm.VT100.printAttributes: 2
XTerm.VT100.printerCommand: cat - > file
XTerm.VT100.translations: #override Meta <KeyPress> P: print() \n

나는 꽤 많이 둘러 보았고 이것이 기본 그놈 터미널 + XTerm + Bash에서 작동하는 해결책을 찾을 수 없습니다.

나는 할 수 없습니다 윈도우의 내용으로 단지 이미지를 원한다.

그놈 터미널은 결국이 문제를 해결할 수있을 것 같지만 어떤 버전에 포함 될지에 대한 정보가 없으며 마지막 업데이트 이후 거의 3 년이 지났습니다 ...


불행히도이 작업을 수행 할 방법이 없습니다. 참조 : askubuntu.com/q/20739
Zaz

@ 조쉬 나는 그것이 같은 질문이라고 생각하지 않습니다. 명령의 모든 출력을 저장하고 싶지 않지만 터미널 창에 보이는 모든 출력을 저장하고 싶지 않습니다.
l0b0

답변:


3

불행히도, l0b0의 답은 다음과 같습니다 : 이것은 불가능합니다.

다른 대답에서는 스크립트를 사용 하여이 작업을 수행하는 방법을 나열했지만 약간의 차이점이 있습니다. 다른 방법은 소스를 컴파일하거나 불안정한 버전을 사용하는 것입니다.

그놈 터미널 소스 타르볼

Raring의 버전은 3.6.1이므로이 소스를 볼 수 있습니다. 115 행의 Terminal-window.c 내부 :

/*
 * We don't want to enable content saving until vte supports it async.
 * So we disable this code for stable versions.
 */

#include "terminal-version.h"

#if (TERMINAL_MINOR_VERSION & 1) != 0
#define ENABLE_SAVE
#else
#undef ENABLE_SAVE
#endif
#endif

옵션 :

  1. 이 아래에 #define ENABLE_SAVE를 추가하십시오.
  2. 버전을 불안정하게 수정하십시오.
  3. 불안정한 .DEB 버전을 다운로드하십시오.

도움이 되었기를 바랍니다.


이것은 ANSI 이스케이프 키 또는 텍스트 만 저장합니까?
l0b0

확인한 결과 vte_terminal_write_contents ()는 ANSI 코드를 작성하지 않는 것으로 나타났습니다. 현재 원래의 응답은 "원하는 것은 불가능합니다"입니다. 개발자가 생각한다면 아마 termainal-window.c에서 함수를 다시 쓸 수있을 것입니다. 이 사이트의 범위를 벗어나므로 더 이상 진행하지 않을 것입니다. 다른 터미널은 유틸리티를 다시 컴파일하는 것보다 훨씬 적은 비용으로이 기능을 제공합니다.
LimpingNinja

+100 가능하다면 나는 이것이 내가 원하는 것의 90 %를 수행하기 때문에 이것과 다른 대답으로 나눌 것입니다.
l0b0

3

불행히도, l0b0의 답은 다음과 같습니다 : 이것은 불가능합니다.

터미널에서 항상 스크립트를 실행하고 모든 출력을 로깅하여이를 정정 할 수있는 두 가지 방법이 있습니다. 그놈 터미널을 열고 편집 -> 프로필 환경 설정 으로 이동 한 다음 제목 및 명령 탭을 클릭 하고 사용자 정의 명령에 다음을 사용하십시오.

bash -l -c 'script -q -c bash $HOME/sessionlogs/$BASHPID.sessionlog.$(date +%Y%m%d-%H%M).txt'

'HOME'아래에 'sessionlogs'가 있는지 확인하십시오.

다른 방법은 제거되어이 질문에 대한 두 번째 답변으로 추가되었습니다.


실제로 다시 붙여 넣을 때 발생하는 오타를 수정하도록 답변을 수정했습니다. 나는 '재 컴파일'옵션도 분리하고 있는데, 나는 두 사람이 관련이 없다는 것에 동의합니다.
LimpingNinja

less -r실제로 출력을 인쇄 된 것으로 표시합니다-감사합니다!
l0b0

0

script (1) 를 통해 쉘을 실행 하여 터미널 이스케이프를 포함하여 파일에 저장된 터미널의 모든 입력 및 출력을 얻을 수 있습니다.


1
그것은 다른 유스 케이스입니다. script사실 이후에 내용을 저장하는 데 사용할 수 없으며 단순히 보이는 출력을 저장하지 않습니다 .
l0b0

1
확실해? 사실 이후 스크립트를 저장할 수는 없지만 이것을 테스트하고 파일 권한을 ll출력하면 모든 출력이 저장됩니다.
Matt

0

VT100 / ANSI 터미널 에뮬레이션을 사용하는 터미널 멀티플렉서 인 화면 이라는 패키지가 있습니다.

에 따르면 의 맨 페이지 화면 우분투 설명서 웹 사이트에서 , 화면 주장 할 수

여러 프로세스 (일반적으로 대화식 셸)간에 물리적 터미널을 다중화하는 전체 화면 창 관리자 각 가상 터미널은 DEC VT100 터미널의 기능과 ISO 6429 (ECMA 48, ANSI X3)의 여러 제어 기능을 제공합니다. 64) 및 ISO 2022 표준 (예 : VT100 / ANSI 터미널 에뮬레이션을 사용하는 터미널 멀티플렉서 인 라인 삽입 / 삭제 및 다중 문자 세트 지원).

그리고 화면을 실행할 때 :

Ctrl ah (하드 카피) 현재 창의 하드 카피를 "hardcopy.n"파일에 씁니다.

그놈 터미널에서 뛰고 screen입력했습니다.Ctrl ah

화면을 실행하고 Ctrl Alt h를 입력

이것은 Gedit에서 열 때 내 hardcopy.1 파일의 출력입니다.

하드 카피 .1 Gedit에서 열림

당신이 찾을 수있는 화면이 우분투 13.04의 열망 / 주요 소프트웨어 저장소입니다.

기본적으로 설치되어 있지 않습니다.


-1

흠, 이것은 이스케이프 코드를 복사하지 않지만 텍스트를 잡기 위해 메뉴 편집-> 모두 선택으로 이동 한 다음 CtrlShiftC(i) 클립 보드를 편집기에 붙여 넣거나 (ii) 유형을 입력하고을 cat > filename누릅니다 CtrlShiftV.


이것은 다른 사용 사례입니다-명시 적으로 언급했듯이 ANSI 이스케이프 코드를 포함하고 싶습니다.
l0b0

-1

man history 이스케이프 문자의 히스토리 확장을 찾으십시오. 나는 history 당신이 요구하는 것을 할 수 있다고 믿습니다 .


man페이지 에서 관련성이 없습니다 . 좀 더 구체적으로 설명하십시오.
l0b0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.