“screen -R” nin tmux eşdeğeri?


10

tmux attachKomut daha bir kombinasyonu gibi davranır screen -rve screen -x- ilk önce en son eklemek için trys müstakil oturumda ve hiçbiri kullanılabilir ardından eğer bir anda takılı oturuma ekleyecektir. Ben davranışı taklit etmek istiyorum screen -R: önce müstakil bir oturuma eklemek deneyin, daha sonra müstakil oturum olsaydı yeni bir oturum başlatmak. Bunu tmux'da başarmanın en iyi yolu nedir?

Yanıtlar:


12

IRC sihirbazlarına danıştıktan sonra, bu davranışa sahip tek bir tmux komutu olmadığından eminim. Neyse ki, kabuğu kullanarak taklit etmek oldukça kolaydır:

(tmux ls | grep -vq attached && tmux at) || tmux

Yeni bir oturum başlatmanız durumunda "sunucuya bağlanılamadı: Bağlantı reddedildi" çıktısını susturmak için küçük düzenleme:(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
l8nite

3

Tmux kılavuzunda söylediklerine rağmen:

             The target-session rules for attach-session are slightly
         adjusted: if tmux needs to select the most recently used session,
         it will prefer the most recently used unattached session.

Drew'un yanıtı aşağıdaki gibi bir durumda düzgün çalışmaz:

0: 1 windows (created Wed Nov  7 23:51:08 2012) [177x47]
1: 1 windows (created Wed Nov  7 23:51:33 2012) [177x47] (attached)

tmux atson oturuma eklenecektir (# 1) (bu oturum hala başka bir yere bağlı olsa da). Bu, birkaç tmux oturumu çalıştırma ve sadece müstakil bir oturuma bağlanma fikrini mahveder (mükemmel bir dolaşım terminali oluşturmak için mosh + tmux + iterm2 kullanmak için).

Başka bir yaklaşım, ekli olmayan bir oturumu elle seçmek olacaktır:

tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`


İyi yakalama! Belgeler gerçek davranışla senkronize değil. Bunun için bir hata raporu oluşturdum .
Drew Frank

Bunu düzelten bir yama var, bu yüzden bir sonraki sürümde reklamı yapılan gibi davranmalıdır.
Drew Frank

Yama 1.8 mi?
momeara

2

Bir seferde sadece iki tmux oturumu yapma eğilimim var, bu yüzden her terminal penceresinde böyle bir şey yapıyorum.

terminal penceresi 0:

tmux attach -t 0 || tmux new

terminal penceresi 1:

tmux attach -t 1 || tmux new

2

Bu benim için en iyisini yaptı:

if [ -z "$TMUX" ]; then
     (tmux ls | grep -vq attached && tmux at -t `tmux ls | grep -vm1 attached | cut -d: -f1`) || tmux new
fi

-T doğru oturuma eklemek için gereklidir.


1

Ne dersin

tmux attach || tmux new

veya bunun yerine dosyayı ~/.tmux.confyoksa oluşturun ve ekleyin

new-session

çalıştırdığınızda hiçbir oturum olmadığında yeni bir oturum oluşturur tmux attach.

Ayrıca tmuxtakma ad oluşturmak da kullanışlı olabilir tmux attach.


İlk teklif, şu anda bağlı olan tmux oturumlarına (ekran -x'e benzer) eklenir, bu da kaçınmak istediğim bir şeydir. İkinci teklif bu aynı sorunu gösterir ve ayrıca yapılandırmayı yeniden yüklemek için tmux kaynak dosyası komutunu kullandığımda "ekstra" tmux oturumları oluşturma istenmeyen bir sonucu vardır.
Drew Frank
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.