tmuxスクリプトは複数のコマンドを起動します

tmuxスクリプトは複数のコマンドを起動します

Bashスクリプトに次のように書くことはできますか?

tmux # Start tmux session.
compass watch /path/to/project1/compass/ # Run the first process.
Ctrl + B, " # Split the pane.
compass watch /path/to/project2/compass/ # Run the second process.
Ctrl + B, D # Exit the session.

答え1

tmux \
    new-session  'compass watch /path/to/project1/compass/' \; \
    split-window 'compass watch /path/to/project2/compass/' \; \
    detach-client

コマンドnew-session(新しいtmuxセッションの作成)とsplit-windowコマンド(現在のウィンドウを2つのウィンドウに分割)tmuxは、オプションのシェルコマンドを使用して実行されます。detach-client最終的な効果は明ら​​かです。

水平分割(2つの並んでいるウィンドウ)が必要な場合は、上記のsplit-window -hコマンドを使用してください。

複数のtmuxコマンドを送信するときは、区別して送信する必要がtmuxあります;。シェルがそれをコマンドの終わりに解釈しないようにするには、引用符/エスケープ処理(、または)で;シェルから保護する必要があります。';'";"\;tmux

読みやすくするために、内容全体を別々の行に分けました。スクリプトでこれを行う場合(推奨)、各行の最後の行の後に何もないことを確認してください\

tmux atmux attachセッションを使用または再接続しますtmux attach-session(同等)。

tmux両方のコマンドが実行されると、セッションは終了します。

答え2

これは私にとってはうまくいきません(私は "ls -la"のような仕事をしようとしました)。これがすることは:

tmux new-session -d bash
tmux split-window -h bash
#sends keys to first and second terminals
tmux send -t 0:0.0 "<my-first-command>" C-m
tmux send -t 0:0.1 "<my-second-command>" C-m
tmux -2 attach-session -d

これにより、非常に一般的なタスクを実行することができます。

他の人が同じことを探している場合に備えてここに残しておきます。

源泉:https://gist.github.com/kizzx2/4739236

答え3

終了せずに短いコマンドを実行するには、次のようにします。

tmux \
    new-session  'ls ; bash' \; \
    split-window 'ls ; bash' 

または

tmux \
    new-session  'ls ; bash' \; \
    new-window   'ls ; bash' 

関連情報