Saya menulis skrip shell yang membuat / melampirkan atau beralih ke sesi tertentu, tergantung pada apakah ada di dalam tmux dan sesi tersebut ada.
Saya memiliki semuanya bekerja dengan baik kecuali untuk kasus yang membutuhkan pembuatan sesi tmux baru dari dalam sesi tmux.
Ketika skrip saya dijalankan tmux new-session -s name
, saya mendapatkan output berikut:
sesi harus disarangkan dengan hati-hati, hapus $ TMUX untuk memaksa
Saya sebenarnya tidak ingin membuat sesi bersarang, tujuan saya adalah membuat sesi terpisah lainnya dan beralih dari dalam sesi tmux .
Apakah ini mungkin?
Jawaban:
Cara tercepat (dengan asumsi Anda menggunakan
ctrl-b
sebagai awalan perintah Anda) adalah:Untuk membuat sesi baru, lalu
untuk memilih dan melampirkan sesi secara interaktif.
sumber
ctrl-b $
Ctrl-b :new -s <name>
untuk memberi nama pada sesi baru.Cara membuat skrip
Skrip ini akan memeriksa apakah ada sesi. Jika sesi tidak ada, buat sesi baru dan lampirkan padanya. Jika sesi memang ada, tidak ada yang terjadi dan kami lampirkan ke sesi itu. Jangan ragu untuk mengganti `~ / development 'dengan nama proyek.
$ touch ~/development && chmod +x ~/development
Sesi baru dari terminal
Mari buat dua sesi terpisah, daftarkan mereka, lampirkan ke satu dan kemudian dari dalam siklus tmux melalui sesi.
tmux new -s name -d
bekerja dari dalam tmux karena kita membuat sesi terpisah baru. Jika tidak, Anda akan mendapatkan kesalahan bersarang.Sesi baru dari dalam tmux
Kami sekarang berada di dalam atau lebih dikenal sebagai terikat pada sesi target kami. Jika kami mencoba membuat sesi baru saat dilampirkan, itu akan menghasilkan kesalahan bersarang.
Untuk mengatasi ini, kami membuat sesi terpisah baru. misalnya,
Siklus (sakelar) Sesi
Prefix
(
sesi sebelumnyaPrefix
)
sesi selanjutnyacatatan:
Prefix
secaraCtrl-b
default. Anda dapat mengikatPrefix
keCtrl-a
dan di Mac OSX Anda dapat mengubah Caps Lock ke ctrlsystem preferences > keyboard > modifier keys
Lampirkan ke sesi menggunakan mode perintah saat berada di dalam tmux
Mencoba melampirkan ke sesi tanpa melepaskannya akan menghasilkan kesalahan.
Sebagai gantinya gunakan mode perintah
Prefix
:
lalu ketikattach -t session_name
dan tekan enter.sumber
Menggunakan ini berhasil untuk saya:
Di
TMUX=
baris pertama diperlukan agar tmux tidak membuangsessions should be nested with care, unset $TMUX to force
pesan.sumber
TMUX=`tmux new-session -d -s name`
Semua perintah yang dapat Anda luncurkan dalam terminal Anda, seperti
tmux new -s sessionName
dapat diluncurkan dari dalamtmux
dengan menekan tombol pemicu (misalnyactrl-b
:):
lalu perintah tanpa bagian awaltmux
.Akibatnya,
ctrl-b :
diikuti olehnew -s sessionName
akan melakukan apa yang Anda inginkan dan memberi nama pada sesi Anda. Ini juga beralih secara otomatis ke sesi baru.sumber
Anda dapat mencoba
unset TMUX
dulu, ini berhasil untuk saya.sumber
atas saran pengguna2354696, saya menggunakan pengikatan kunci berikut untuk membuat sesi baru atau "menggandakan" sesi yang ada
sumber