
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 a
tmux 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
これにより、非常に一般的なタスクを実行することができます。
他の人が同じことを探している場合に備えてここに残しておきます。
答え3
終了せずに短いコマンドを実行するには、次のようにします。
tmux \
new-session 'ls ; bash' \; \
split-window 'ls ; bash'
または
tmux \
new-session 'ls ; bash' \; \
new-window 'ls ; bash'