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'