Bir şeyi durdurmaya çalıştığımda ^C
bazen ^D
terminalde kullanıyorum.
İkisi arasındaki fark nedir? Neden bazı programı yanıt vermiyor ^C
, ancak ^D
. Neden Terminal.app kullandığımda sonlandırılıyor ^D
?
Bir şeyi durdurmaya çalıştığımda ^C
bazen ^D
terminalde kullanıyorum.
İkisi arasındaki fark nedir? Neden bazı programı yanıt vermiyor ^C
, ancak ^D
. Neden Terminal.app kullandığımda sonlandırılıyor ^D
?
Yanıtlar:
CtrlCterminale SIGINT
, varsayılan olarak uygulamayı sonlandırmak anlamına gelen geçerli ön plan işlemine bir göndermesini söyler . CtrlDterminale, bash'ın çıkma isteği olarak yorumladığı standart girişe bir EOF kaydetmesi gerektiğini söyler.
Ctrl+ D( ^D
) , dosyanın sonu anlamına gelir . Yalnızca bir satırın başında çalışır (biraz basitleştiriyorum) ve programın terminalden girdi okumaması durumunda etkisi yoktur. Denemenizde, ^D
kabuğa daha fazla komut yazmayacağınızı söyledi, bu yüzden çıkıldı; daha sonra terminal, alt programı sonlandırıldığı için çıktı.
Ctrl+ C( ^C
) “kesme” anlamına gelir, yani ne yaptığınızı durdurun. Teknik olarak, tuşuna basılması , varsayılan olarak bir uygulamayı sonlandıran, ancak çoğu programda en üst seviyeye (örneğin bir kabuğun içinde komut satırını yazmayı bırakıp bozulmamış istemine geri dönme) giden INT sinyalini^C
gönderir .
Bir program yanıt vermiyorsa ^C
, Ctrl+ \( ^\
) yöntemini deneyebilirsiniz . Bu , varsayılan olarak bir uygulamayı sonlandıran ve pek fazla programın kesişmediği QUIT sinyalini gönderir .
Sinyal gönderen başka bir anahtar Ctrl+ Z( ^Z
). Ön planda çalışan programı duraklatan TSTP sinyalini gönderir . (TSTP “terminal durdurma” için kısadır; STOP'a benzer, ancak STOP yapamazken TSTP göz ardı edilebilir.) Kabuktan, bu programın fg
komutunu (ön planda devam ettirme) veya bg
komutla (devam ettirme modunda) devam ettirebilirsiniz. arka fon).
Bu tuşların tümü stty
komutuyla değiştirilebilir . Bazı programlar, özellikle anahtar bağlantıları olan tam ekran programlar, bunları devre dışı bırakır.
KeyboardInterrupt
? Ctrl + d ile (bir satırın başındaysa) ve ctrl + \ ile çıkar.
Yukarıdaki 2 gerçekten iyi cevaplar ekleyerek, işte bir örnek:
Eğer yazarsanız python
kabuğunda, bu Python en >>> istemine götürür.
Şimdi, vurursanız Ctrl+C
, söyler KeyboardInterrupt
ve >>> de kalır.
Eğer döngü için içine girerseniz, yazarak örneğin for x in (text):
size bir ... istem görüntüleyerek daha da yazın vurduğunuz takdirde bekler Ctrl+C
şimdi, deyimi için çıkmak ve >>> istemi dönersiniz
Eğer vurursanız Ctrl+D
Herhangi bir noktada, >>> veya ... 'da python isteminden çıkacak ve orijinal kabuğa geri dönecektir.
Benzer şekilde, başka bir makineye ssh'lenmişse, Ctrl+C
varolan herhangi bir komutu sonlandıracak, Ctrl+D
bunu yapacak ve makineden çıkacaktır. (Ayrıca, Delete
anahtar a ile aynıdır Ctrl+D
)