Bir tmux oturumunun içinden yeni tmux oturumu oluşturun


106

Birinin tmux içinde olup olmadığına ve oturumun var olup olmadığına bağlı olarak belirli bir oturumu oluşturan / ekleyen veya bu oturuma geçiş yapan bir kabuk betiği yazıyorum.

Bir tmux oturumundan yeni bir tmux oturumu oluşturmayı gerektiren durum dışında her şey harika çalışıyor.

Komut dosyam çalıştığında tmux new-session -s name, aşağıdaki çıktıyı alıyorum:

oturumlar dikkatli bir şekilde iç içe yerleştirilmeli, zorlamak için $ TMUX ayarlanmamalıdır

Aslında oturumları iç içe geçirmek istemiyorum, amacım başka bir ayrı oturum oluşturmak ve bir tmux oturumundan ona geçiş yapmak .

Mümkün mü?


2
Bu soruyu bulan kullanıcılar için harika bir kaynak: leanpub.com/the-tao-of-tmux/read
0xSheepdog

Yanıtlar:


145

En hızlı yol ( ctrl-bkomut önekiniz olarak kullandığınızı varsayarsak ):

ctrl-b :new

Yeni bir oturum oluşturmak için, ardından

ctrl-b s

oturumu etkileşimli olarak seçmek ve eklemek için.


5
"Oturumlar dikkatli bir şekilde iç içe geçmeli, TMUX'u zorlamak için ayarlanmamalı" ile ilgilenmeyen çözüm için +1
Marcin Rogacki

3
ve sonra oturumunuzu yeniden adlandırabilirsiniz:ctrl-b $
nha

22
Ve Ctrl-b :new -s <name>yeni oturuma bir isim vermek için.
Ain Tohvri

33

Komut dosyası nasıl oluşturulur

Bu komut dosyası, bir oturumun olup olmadığını kontrol edecektir. Oturum yoksa, yeni oturum oluşturun ve ona ekleyin. Oturum yoksa hiçbir şey olmaz ve biz o oturuma bağlanırız. "~ / Development" 'ı proje adıyla değiştirmekten çekinmeyin.

$ touch ~/development && chmod +x ~/development

# ~/development

tmux has-session -t development
if [ $? != 0 ]
then
  tmux new-session -s development
fi
tmux attach -t development  

Terminalden yeni oturum

İki ayrı oturum oluşturalım, listeleyelim, birine ekleyelim ve sonra tmux döngüsü içinden oturumlar arası.

tmux new -s name -dtmux içinden çalışır çünkü yeni bir bağımsız oturum oluşturuyoruz. Aksi takdirde iç içe geçme hatası alırsınız.

$ tmux new -s development -d
$ tmux new -s foo -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
$ tmux attach -t
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]

Tmux içinden yeni oturum

Şimdi içerideyiz veya daha çok hedef oturumumuza bağlı olarak biliniyoruz . Bağlıyken yeni bir oturum oluşturmaya çalışırsak, bu bir yuvalama hatasıyla sonuçlanacaktır.

$ tmux new -s bar
> sessions should be nested with care, unset $TMUX to force

Bunu çözmek için yeni bir bağımsız oturum oluşturuyoruz. Örneğin,

$ tmux new -s bar -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> bar: 1 windows (created Wed Jan 13 17:19:35 2016) [204x54]

Döngü (anahtar) Oturumları

  • Prefix ( önceki oturum
  • Prefix ) sonraki seans

not: Prefix bir Ctrl-bvarsayılan olarak. Sen bağlayabilir Prefixiçin Ctrl-aCaps ctrl için kilitleyin değiştirebilir ve Mac OSX içindesystem preferences > keyboard > modifier keys

Tmux içindeyken komut modunu kullanarak bir oturuma ekleyin

Ayrılmadan bir oturuma bağlanmaya çalışmak bir hataya neden olur.

$ tmux attach -t development
> sessions should be nested with care, unset $TMUX to force

Bunun yerine komut modunu kullanın, Prefix :ardından yazın attach -t session_nameve enter tuşuna basın.


Tam yanıtınız için teşekkürler, bu soru birkaç soruyu aynı anda yanıtladı!
mdekkers

24

Bunu kullanmak benim için çalışıyor:

TMUX= tmux new-session -d -s name
tmux switch-client -t name

TMUX=Tmux bir atmaz böylece ilk satırda gereklidir sessions should be nested with care, unset $TMUX to forcemesajı.


1
İlk satırı şu şekilde değiştirdikten sonra senaryomda harika çalışıyor:TMUX=`tmux new-session -d -s name`
Michael Robinson

17

Terminalinizde başlatabileceğiniz tüm komutlar, örneğin tmux new -s sessionNametmux , tetikleme tuşuna (örneğin:) basılarak ve ctrl-bardından :başlangıç tmuxkısmı olmadan komuta basılarak içeriden başlatılabilir .

Sonuç olarak, ctrl-b :arkasından new -s sessionNametam olarak istediğinizi yapacak ve seansınıza bir isim verecektir. Ayrıca otomatik olarak yeni oturuma geçer.


10

Önce deneyebilirsiniz unset TMUX, bu benim için çalışıyor.


7

user2354696'nın tavsiyesiyle, yeni bir oturum oluşturmak veya mevcut bir oturumu "klonlamak" için aşağıdaki anahtar bağlamaları kullanıyorum

bind-key N run-shell 'TMUX = tmux yeni-oturum -d \; istemci anahtarı -n '
bağlama anahtarı C çalıştır-kabuğu 'TMUX = tmux yeni-oturum -t $ (tmux görüntü-mesajı -p #S) -s $ (tmux görüntü-mesajı -p # S-klon) -d \; istemci anahtarı -n \; görüntülü mesaj "oturum #S klonlandı" '
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.