web-dev-qa-db-ja.com

TMuxスクロールバッファーの内容を取得する

TMuxを使用して、現在のコマンドラインの上からスクロールバッファーの内容をプログラムで取得する方法はありますか?

基本的には、一致する文字列が見つかるまで上方向に反復するbashスクリプトを記述しようとしています。明確にするために、入力したコマンドの履歴を調べたくありません。コンソールに表示されたすべてを確認したい。

13
mahemoff

tmux 1.5以降では、-Scapture-paneオプションに負の数を指定して、スクロールバックバッファーにアクセスできます。

例:

  • ペインの現在のテキストと一緒に、最大32768行のスクロールバックバッファーをキャプチャします。

    tmux capture-pane -pS -32768
    
  • 直近の10番目の「スクロールオフ」ラインのみをキャプチャします。

    tmux capture-pane -pS -10 -E -10
    
  • 最も最近の「スクロールオフ」された100行を(最大で)キャプチャします。

    tmux capture-pane -pS -100 -E -1
    
  • ペインの現在の一番上の行にまたがる11行をキャプチャします(5つの「スクロールオフ」行と、ペインの一番上の6行):

    tmux capture-pane -pS -5 -E 5
    

注:ほとんどのtmuxコマンドと同様に、「現在の」ペインがプローブ対象のペインでない場合は、-tを使用して特定のペインをターゲットにすることができます。


上記の例では、-pオプションをcapture-paneに使用しています。これはtmux 1.8以降でのみ使用できます。古いバージョンでは、save-bufferを使用することで回避できます:

tmux capture-pane -S -32768 \; save-buffer - \; delete-buffer
22
Chris Johnsen