skrip tmux untuk meluncurkan beberapa perintah


21

Bagaimana saya bisa menulis yang berikut dalam skrip 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.

Jawaban:


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

The new-sessionperintah (yang menciptakan baru tmuxsesi) dan split-windowperintah (yang membagi jendela saat menjadi dua panel) di tmuxmengambil shell perintah opsional untuk menjalankan. The detach-clienttidak jelas di akhir.

Jika Anda ingin pemisahan horizontal (dua panel berdampingan), gunakan split-window -hperintah di atas.

Saat mengirim beberapa tmuxperintah ke tmuxAnda harus memisahkannya ;. The ;kebutuhan untuk dilindungi dari shell dengan mengutip / melarikan diri itu ( ';', ";"atau \;), untuk menghentikan shell menginterpretasikannya sebagai akhir dari tmuxperintah.

Saya telah membagi semuanya menjadi beberapa baris terpisah untuk dibaca. Jika Anda melakukan ini dalam skrip (yang saya sarankan), pastikan tidak ada setelah final \pada setiap baris.

Pasang kembali ke sesi dengan tmux a, tmux attachatau tmux attach-session(ini semua setara).

The tmuxsesi akan berakhir setelah kedua perintah telah selesai mengeksekusi.


3

Ini tidak berhasil untuk saya (saya mencoba melakukan sesuatu seperti 'ls -la'). Apa yang dilakukan adalah:

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

Ini memungkinkan saya untuk menjalankan hal-hal yang sangat umum dan meskipun terlihat jelek, ini cukup fungsional.

Hanya meninggalkannya di sini kalau-kalau orang lain mencari hal yang sama.

Sumber: https://gist.github.com/kizzx2/4739236

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.