The tmux attach
perintah bertindak lebih seperti kombinasi screen -r
dan screen -x
- pertama trys untuk melampirkan ke yang paling baru terpisah sesi, dan kemudian jika tidak tersedia maka akan melampirkan ke sesi saat ini melekat. Saya ingin meniru perilaku screen -R
: pertama-tama cobalah untuk melampirkan sesi terpisah, kemudian memulai sesi baru jika tidak ada sesi terpisah. Apa cara terbaik untuk mencapai ini di tmux?
10
(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
Terlepas dari apa yang tertulis di manual tmux:
Jawaban Drew tidak akan berfungsi dengan baik dalam situasi seperti:
tmux at
akan melampirkan ke sesi terakhir (# 1) (meskipun sesi ini masih terpasang di tempat lain). Ini menghancurkan seluruh ide untuk menjalankan beberapa sesi tmux dan hanya menempel pada sesi yang terpisah (untuk menggunakan mosh + tmux + iterm2 untuk membuat terminal roaming yang sempurna).Pendekatan lain adalah dengan memilih sesi yang tidak dilampirkan secara manual:
tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`
sumber
Saya cenderung hanya memiliki dua sesi tmux sekaligus, jadi saya melakukan sesuatu seperti ini di setiap jendela terminal.
jendela terminal 0:
jendela terminal 1:
sumber
Ini yang terbaik bagi saya:
-T diperlukan untuk melampirkan sesi yang tepat.
sumber
Bagaimana dengan
atau sebagai gantinya hanya membuat file
~/.tmux.conf
jika tidak ada, dan tambahkanuntuk itu sehingga menciptakan sesi baru ketika tidak ada saat Anda menjalankan
tmux attach
.Mungkin juga berguna untuk membuat
tmux
aliastmux attach
.sumber