シェルコマンドを使用してtmux作業ディレクトリを変更する方法

シェルコマンドを使用してtmux作業ディレクトリを変更する方法

シェルコマンド実行時の作業ディレクトリの設定現在のtmuxセッション到着現在の作業ディレクトリ

attach-session -t . -c /path/to/directoryセッション作業ディレクトリの設定方法に多くの回答がある質問に対する回答は、tmuxコマンドプロンプトで実行されているようです。私の(デフォルト)設定ではC-b : attach-session -t . -c /path/to/directory

私は手動でtmuxコマンドプロンプトと対話したくありません。主にターゲットディレクトリを入力またはコピーして貼り付ける操作を処理したくないので、単純なコマンドが必要です。私はシェルプロンプトからtmuxにコマンドを送信できることを知っています。たとえば、ステータスバーにメッセージを表示するのではなく、シェルでtmux display-message MESSAGEコマンドを実行できます。C-b : display-message HELLOただし、実行すると、tmux attach-session -t (tmux display-message -p '#S') -c (pwd)「セッションを慎重に入れ子にする必要があります。$ TMUXをオフにして強制的に実行する必要があります」というエラーが発生します。もちろん、私はtmuxセッションをネストしたくないだけでtmuxのディレクトリを変更したいと思います。現在の会議。

私はtmux send-keysandを使ってみましたが、tmux-send-prefixこれはキーシーケンスをtmuxに直接渡すのではなく、デフォルトのtty(シェルがそれに応答する)にキーシーケンスを渡すようです。

私はFishシェルを使用していますが、ソリューションがシェルスクリプトに適していると仮定しているので、すべての言語のソリューションに満足しています。

ベストアンサー1

私の考えの1つの解決策は次のとおりです。

tmux bind n new-window -c "/the/dir/you/want"

( "n"を新しいウィンドウを作成するときに使用した実際の文字に置き換えます。)

私が正しく理解したら、すべての新しいウィンドウがRuntimemy-script /some/dirとRuntimeの間のmy-script /some/other/dirディレクトリで開くことを望みます/some/dir

私が提案するコマンドは、あなたが最も頻繁に使用している「新しいウィンドウ」バインディングだけを無視します。新しいウィンドウが必要になるたびに手動で実行されますtmux new-windowが、機能しません。

(編集1)ただし、tmux new-windowスクリプトで実行すると費用はかかりませんtmux new-window -c "${the_dir:-(pwd)}"

おすすめ記事