bashコマンドのtmuxバインディングキーが動作を拒否します。

bashコマンドのtmuxバインディングキーが動作を拒否します。

現在のウィンドウでツリーモード以外のすべてのウィンドウを再生成できるようにしたいです。このスクリプトを作成して動作します。

for i in $(tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do tmux respawn-pane -k -t $i; done

Rtmux-action+キーにバインドしたいです。しかし、これはうまくいきません。

私は以下を試しました:

bind-key R send-keys "for i in $(tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do tmux respawn-pane -k -t $i; done"
bind-key R run-shell "for i in $(tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do tmux respawn-pane -k -t $i; done" Enter

また、スクリプトをファイルに入れて、以下を追加してみました。.tmux.conf

bind-key R run-shell "./tmux_respawn.sh"

ところで、127エラーが発生した理由を知りません。現在のウィンドウでスクリプトを実行すると、エラーは発生せずに動作します。

また、〜/.bashrcにエイリアスを構築しようとしましたが、シェルではうまく機能しますが、キーバインドを介して実行しようとすると、シェル127エラーが発生します。

alias RespawnTmuxPanes='for i in $(/usr/local/bin/tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do /usr/local/bin/tmux respawn-pane -k -t $i; done'

このスクリプトに対して別々のファイルを作成したくないので、.tmux.confバインディングキーを使用して直接実行したいと思います。どうすればいいですか?

ベストアンサー1

私はスクリプトを直接実行しようと試みることを放棄し、~/.tmux.conftmuxが実行する別のファイルにスクリプトを構築しました。

スクリプト:

#!/bin/bash
for i in $(tmux list-panes -F '#{pane_id} #{pane_mode} #{pane_active}' -f '#{?#{m:tree-mode,#{pane_mode}},0,1}' | sort -k2 | cut -f1 -d' '); do tmux respawn-pane -k -t $i; done

-f注:tmuxを使用してツリーモードウィンドウをフィルタリングする方法が見つかったのでawk

これは私のtmuxファイルのエントリです。

bind-key R run-shell "/home/mradmin/.tmux_respawn_screens.sh"

これはTMUX-ACTION +を実行でき、Rツリーモードになっていないすべてのウィンドウを再生成し、最後にあったアクティブウィンドウを実行するために機能します。

おすすめ記事