Terminal - yanlışlıkla çıktıktan sonra oturumu nasıl yeniden başlatırsınız?


22

Bazen yanlışlıkla bir Terminal oturumundan çıkıyorum (genellikle olmadığımda uzak bir sisteme bağlı olduğumu düşünüyorum), bu yüzden bu noktaya geliyorum:

resim açıklamasını buraya girin

Bu noktada oturumu nasıl yeniden başlatabilirim? Tüm normal iş akışı için ayarlanmış bir grup sekme olduğundan pencereyi veya sekmeyi kapatmak istemiyorum.

Şimdiye kadar bulduğum tek çözüm Terminal'den tamamen çıkmak ve tekrar açmaktır, ancak diğer Terminal pencerelerinde / sekmelerinde yaptığım her şeyi kesintiye uğrattığı için ideal olmaktan çok uzaktır.


1
Linux (KDE / Gnome) terminal emülatörleri sekmeleri yeniden sıralamanızı sağlar. Dolayısıyla, yeni bir sekme başlatırsanız, kapattığınız sekmeyi değiştirmek için sekmeyi taşıyabilirsiniz. OS X'in terminalinde bu yok mu? (Ben bir mac kişi değilim, ben sadece "sıcak ağ soruları" gördüm.) Ben de bir terminal penceresinde sekmeler yerine kabuk oturumları çoğullamak için GNU ekran kullanmak istiyorum. Başka bir bilgisayarda ekran oturumu olan başka bir sekmem var. Bazen aynı anda iki şey görmek istersem başka bir terminal açarım, ama normalde kabuklarımın numaralandırılmasını seviyorum, ekranın orada değil, yaptığı gibi
Peter Cordes

1
Her neyse, bir GUI sekmesinde aynı ana bilgisayarda birden fazla mermi tutmak için ekran (veya zaten ekran bilmiyorsanız tmux) öneririm. Bu iki düzeyli sekmeler / ekran pencereleri hiyerarşisi, nerede olduğunu izlemeden birçok şeyin açık olmasını sağlar. Ayrıca, dediğim gibi, farklı kabuklar için sayılara sahip olmak ^t 8, hangi sekmenin tıklanacağını veya (veya kaç ctrl-pgup'a çarpılacağını) görsel olarak saymak yerine, belirli bir bağlam için hangi sayının değiştirileceğini ( örneğin) hatırlamayı kolaylaştırır. .
Peter Cordes

1
hem ekran hem de tmux'un her ekran penceresinde yapılandırılabilir geri kaydırma özelliği vardır. Yine de yeniden başlatmalarda kalıcılık için disk üzerinde kaydırma tutmak hakkında bir şey görüyorum hatırlamıyorum! Bu temiz. Üç sekme zihinsel olarak takip etmek için yeterince kolaydır. Bir GUI dosya tarayıcısı değil, komut satırından neredeyse her şeyi yaptığım için genellikle ev masaüstümde 10 gibi bir şey var. (video / sesli kitap oynatmak, vb.) cdKod üzerinde çalışırken genellikle kaynak kodunda düzenlenmiş yaklaşık üç kabuk var , bu yüzden kullanımınızla eşleşiyor.
Peter Cordes

1
Her neyse, sekmeleri sürüklemek, bir sekmeyi yanlışlıkla kapatmadan kurtarmayı kolaylaştıracaktır, çünkü sekmeyi gittiği yere geri koyabilirsiniz.
Peter Cordes

1
Bir çok insanın bunları tek bir terminal öykünücü sekmesindeki yerel kabuk oturumları için yerel olarak kullandığını düşünmüyorum. IDK, belki de diğer eski okul komut satırı bağımlıları da yapıyor. Ana kullanım durumu sshbir yere girdikten sonra . Ekranı kullanmaya alıştım ve uzak oturumlarda olduğu gibi yerel olarak da kullandım. Anladığım kadarıyla, eğer screenkas belleğinizde yoksa, tmux öğrenin, çünkü ekran eski ve kıvrımlıdır. Muhtemelen tmux, kullandığım tüm aynı tuş bağlantılarını kullanmak için değiştirebilir ve yapılandırabilirim screen, ancak ekran hala benim için iyi çalışıyor.
Peter Cordes

Yanıtlar:


26

Bu noktada, sekmeyi geri almanın bir yolu yoktur. Terminal oturumu kapatıldı ve artık bir TTY'ye sahip değil. Akıllıca bir şey yapmak için sekmeye başvurmanın bir yolu yoktur. İleride sorun yaşamayacak şekilde bu işlevi .bashrc veya .profile dosyasına eklemenizi öneririm:

exit() {
    read -t5 -n1 -p "Do you really wish to exit? [yN] " should_exit || should_exit=y
    case $should_exit in
        [Yy] ) builtin exit $1 ;;
        * ) printf "\n" ;;
    esac
}

veya Z Kabuğunu kullananlarımız için (.zshrc'nize ekleyin):

exit() {
    if read -t5 -q should_exit\?"Do you really wish to exit? [yN] "; then
        builtin exit $1
    fi
}

Seninle o sinir bozucu çıkış komutu arasında hoş bir küçük engel var! Lord aynı şeyi geçmişte birçok kez yaptığımı biliyor.


1
Tamamdır! Şimdi, 5 saniye sonra ( -t 5seçenek), okuma komutu başarısız olur ve bu da onu takip eden çıkış komutunu tetikler.
William T Froggard

1
Mükemmel - teşekkürler - Keşke size iki oy verebilirim! ;-)
Paul R

1
@PaulR: exitBash kullanıyorsanız takma ad kullanmanıza gerek yoktur. Senaryonuzu koyabilirsiniz ~/.bash_logout.
sonraki duyuruya kadar duraklatıldı.

2
@DennisWilliamson: ilginç bir fikir, ancak oturum kapatmayı içeriden nasıl iptal edeceğinizden emin değilim .bash_logout?
Paul R

3
@PaulR: Hata! Bunu düşünemedim! Tamlık için, takma ad kullanmalı logoutve IGNOREEOF1'den büyük ayarlamalısınız (veya yeniden ^ ^)
sonraki duyuruya kadar duraklatıldı.

5

William T Froggard'ın senaryosu ihtiyacım olanı yapmadı, çünkü genellikle bu duruma girmenin tek yolu ^ D ( ctrl+ D) ile ve yeniden tanımlamak exitbu durum için hiçbir şey yapmadı. Benim için Dennis Williamson'ın yerleşme önerisi IGNOREEOFyeterliydi. Az önce ekledim:

# Do not exit on a single ^D, require 2 in a row
IGNOREEOF=1

benim ~/.bashrcdosya ve şimdi (eğer ben üst düzey kabuk ve terminal çıkmak istiyorum) ilk ^ D yanıt oluşturur:

Use "logout" to leave the shell.

Hemen tekrar ^ D yazarsam, kabuk çıkar, bu yüzden istediğim zaman çıkmak hala kolaydır, ancak şimdi tek bir ^ D bana bir uyarı verecektir. (İsterseniz, IGNOREEOFart arda ek ^ D istemek için daha yüksek bir sayı ayarlayabilirsiniz .)

Ayrıca yardımcı, ben bir alt kabuk varsa, ilk ^ D yanıt oluşturur:

Use "exit" to leave the shell.

Yine, ekstra bir ^ D beni dışarı çıkaracak ve şimdi bir alt kabuktan çıkmak ve üst düzey kabuktan çıkmak arasındaki farkı söyleyebilirim.

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.