모든 tmux 롤백을 파일에 쓰기

모든 tmux 롤백을 파일에 쓰기

tmux 세션의 모든 롤백을 파일에 쓰는 방법은 무엇입니까?

capture-panel 현재 화면을 잡을 수 있지만 전체 스크롤백을 잡을 수는 없습니다.

답변1

간단한 답변을 찾는 사람들을 위해:

  1. prefix+를 사용한 :다음 capture-pane -S -3000+를 입력합니다 Return. ( -3000저장하려는 행 수로 바꾸거나 -모든 행으로 바꾸십시오.) 그러면 행이 버퍼에 복사됩니다.
  2. 그런 다음 버퍼를 파일에 저장하려면 prefix+를 다시 사용 :하고 save-buffer filename.txt+를 입력하면 됩니다 return. (기본적으로 ~/에 파일이 저장됩니다.)

(기본값 은 + Prefix입니다 .)CtrlB

답변2

그리고멀티플렉서1.5. capture-pane이 명령은 캡처의 시작 및 끝 라인을 허용 -S하고 -E지정하며, 기록에서 라인을 지정하는 데 음수 값을 사용할 수 있습니다. 버퍼에 데이터가 있으면 save-buffer.

.tmux.conf다음은 파일 이름을 묻는 메시지를 표시하여 모든 것을 마무리하는 바인딩(for)의 예입니다 .

bind-key P command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'

이렇게 하면 (최대) 32768개의 기록 줄과 현재 표시된 줄이 캡처됩니다. 에서 시작하다멀티플렉서1.6에서는 포드의 기록이 32Ki 행(일반적으로 최대 2Gi 행)보다 깊은 경우 INT_MIN만큼 낮은 숫자를 사용할 수 있습니다. 다음으로 시작됨멀티플렉서capture-pane -S -2.0, "역사의 시작부터"를 의미하는 데 사용할 수 있습니다 (즉, 하드 코딩된 큰 음수가 없음).


참고: 저장된 파일의 줄 수가 항상 창의 기록 제한에 높이를 더한 값과 같지는 않습니다.

창의 기록 버퍼가 가득 차면멀티플렉서하나의 행만 삭제하는 대신 가장 오래된 10%의 행을 삭제합니다. 이는 창의 유효 기록 깊이가 구성된 제한의 90%만큼 낮을 수 있음을 의미합니다.

답변3

(tmux 접두사 키를 사용하는 대신) 명령줄에서 실행할 수 있는 작업을 원한다면 다음을 실행해 보세요.

tmux capture-pane -pS -1000000

실행했는데 아무 일도 하지 않는 것 같다면 화면에 표시된 내용을 그대로 출력하기 때문에 똑같이 보이기 때문입니다.

물론 파일로 전송할 수도 있습니다.

tmux capture-pane -pS -1000000 > file.out

tmux매뉴얼 페이지를 참조 하여 capture-pane수행할 수 있는 더 많은 작업을 검색하세요(예: 색상을 유지하려는 경우 이스케이프 시퀀스 캡처 또는 새 줄이 포함되지 않은 경우 여러 시각적 줄을 연결하려는지 지정 등).

답변4

나는 표준 키 바인딩을 가지고 있는데,@jasonwryan의 답변그리고 구성에서 아무것도 변경하지 않았습니다.

아래는 나에게 효과가 있었던 레시피입니다. tmux 구성을 변경하지 않고 일부 롤백을 빠르게 복사하려는 경우 이 방법이 유용할 수 있습니다.

Prefix== Ctrl+b내 tmux(tmux 1.6, debian 7)에서.

  1. 선택 모드 입력: Prefix+ [.
  2. 선택 시작: Space.
  3. vim 탐색을 사용하여 필요한 텍스트를 강조 표시합니다. 예를 들어 화살표 키를 사용하거나 키를 눌러 gg출력 기록의 시작 부분으로 이동합니다.
  4. 실제로 내부 클립보드에 복사를 사용합니다 Enter. 복사 모드가 종료됩니다.
  5. vim을 사용하여(아마도 새 tmux 탭에서) 파일을 열고 Prefix+를 사용하기 전에 복사한 내용을 붙여넣습니다 ].
  6. 그런 다음 필요에 따라 파일을 분류하거나 출력을 사용할 수 있습니다.

관련 정보