Saya mencoba mencari cara melampirkan ke tmux session
jika sesi tmux bernama ada, jika tidak saya ingin membuat yang baru dengan nama yang diberikan.
Saat ini, saya tahu beberapa tmux
perintah yang sebagian dapat mencapai apa yang saya cari, tetapi tidak jelas bagaimana menggabungkannya untuk mendapatkan apa yang saya cari:
tmux attach
melekat pada sesi yang ada secara otomatis - tetapi kesalahan keluar jika tidak ada sesitmux new
membuat sesi baru - tetapi selalu melakukannya setiap saat, jadi saya tidak bisa membiarkannya di sesi saya.tmux.conf
tmux has-session
menguji apakah ada sesi - tetapi saya tidak tahu cara menjahitnya bersama dengan perintah lain
Jadi, saya ingin membuat skrip tmux, sehingga ini terjadi secara otomatis, daripada harus membuatnya secara manual setiap kali saya harus masuk ke sesi.
Bagaimana saya bisa menulis skrip otomatis untuk membuat sesi tmux baru (jika nama sesi yang diberikan tidak ada) atau melampirkan ke nama sesi (jika ada)?
man tmux
kata saya : "Bendera -A membuat sesi baru berperilaku seperti sesi lampiran jika nama sesi sudah ada"Jawaban:
Bergantian, Anda dapat menambahkan
ke
.tmux.conf
- Anda yang akan membuat sesi default saat server mulai.Kemudian
tmux attach
akan melampirkan ke sesi saat ini (menjalankan server, yaitu), atau membuat sesi baru (memulai server, membaca file konfigurasi, mengeluarkannew-session
perintah) dan melampirkannya.sumber
new-session
menghancurkannya maka itu tampaknya menjadi masalah nyata.source-file ~/.tmux.conf
)-A
opsi ininew-session
jika Anda memberi nama sesi Anda.new-session -A -s mysession
akan bermain dengan baik dengan memuat ulang konfigurasi.Saya menemukan jawabannya ( dan menunjukkannya kepada saya ).
sumber
tmux attach-session -t my-session || tmux new-session -s my-session
. Satu-satunya masalah adalah ini bukan atom. tmux benar-benar harus memiliki perintah create-or-attach.alias tm='tmux attach || tmux new'
tmux attach -t some_name || tmux new -s some_name
. Ubah some_name menjadi $ 1 tambahkan shebang, dan simpan.new
vsnew-session
: mereka adalah sinonim, dan begitu jugaattach
danattach-session
.tmux new-session -ds default \; split-window -dv 2>/dev/null; tmux attach -t default
bekerja jauh lebih baik dan tidak membuka tmux kedua jika Anda/bin/kill
yang pertama. Satu-satunya downside adalah bahwa Anda perlu menyebutkan sesi untuk ini.Seperti yang ditunjukkan dalam komentar dari Petr Viktorin , jkoelker dan pjincz , Anda dapat menggunakan perintah berikut untuk dilampirkan
mySession
jika ada, dan untuk membuatnya jika tidak:Dari
man tmux
:new-session
telah mendukung-A
sejak tmux-1.8 .sumber
gnome-terminal
sebagai perintah saya sarankan meninggalkan-s
dan nama sesi khusus sehingga Anda tidak berakhir dengan SETIAPgnome-terminal
sesi baru yang dilampirkan pada sesi yang sama. Anda selalu dapat memilih sesi yang ada denganprefix + s
setelah membuka terminal baru.Meskipun saya menemukan jawaban rampion cukup untuk menggunakan 1 sesi, skrip ini memungkinkan Anda mengatur beberapa sesi:
CATATAN:
sumber
Mengadaptasi saran Alex untuk memasukkan konfigurasi berbasis proyek pada saat startup, saya mulai menggunakan yang berikut:
di mana
tmux-myproject.conf
seri startup saya dari perintah tmux untuk membuat jendela dan panel saya, serta memulai editor saya.sumber
Saya menggunakan alias untuk membuat sesi baru jika diperlukan, dan melampirkan ke sesi default saya jika sudah ada:
Saya menambahkan ini ke .login di server saya.
Alasan saya melakukannya dengan cara ini adalah karena saya tidak ingin melampirkan ke sesi aktual yang sama, saya ingin sesi baru yang menggunakan kelompok windows yang sama.
Ini juga mirip dengan berlari
screen -xRR
.sumber
tmux list-sessions
.tmux new -A -s default
untuk memulai sesi baru jika tidak ada atau lampirkan secara otomatis. Saya pikir ini jauh lebih baik daripada mengedit file konfigurasi.Bagi mereka yang ingin melakukan hal yang sama di
fish
:sumber