CTRL + C komut satırına geri dönmek için kullanmak yanlış mı?


27

Kullanıyorum tail -fve kabuğa dönmek istiyorum, her zaman kullanıyorum CTRL+C. Veya bir komut yazarken ve onu iptal etmek ve baştan başlamak gibi hissettiğimde, sadece CTRL+Cboş bir komut satırı istemine geri dönmek için. Bu kötü bir uygulama olarak mı kabul edilir? Bazen bir şeyden uzaklaşmanın daha iyi bir yolu olabileceğini hissediyorum, ama gerçekten hiçbir fikri yok.


6
Kısmen girilen bir kabuk komutunu iptal etmek için, Control-U veya Sil komutunu kullanabilirsiniz (tty ayarlarınıza ve anahtar ciltlemelerinize bağlı olarak), ancak Control-C kullanırken yanlış bir şey yok.
Keith Thompson,

@KeithThompson Ctrl + U için teşekkürler, bunun farkında değildim :-)
Patrick

Kayıt için Cu, girilen komutu gerçekten iptal etmiyor , onu yapıştırma arabelleğine taşıyor (bazı programların "kes" işlevselliğine benzer).
Chris Down,

Yanıtlar:


36

Ctrl+ Cprograma bir SIGINT gönderir. Bu, programa sürecini kesmek (ve bitirmek) istediğinizi söyler. Çoğu program bunu doğru şekilde yakalar ve temiz bir şekilde çıkar. Yani, evet, bu çoğu programa son vermenin "doğru" bir yoludur.

Programlara diğer sinyalleri göndermek için başka klavye kısayolları da var, ancak bu en yaygın olanıdır.


9
Kullanıcıdan girdi okuyan programlar için Ctrl + D de vardır. Ctrl + D, STDIN'i programa kapatır. İncelikle kabuğundan çıkarken bu da kullanılabilir (yazarak çıkmakla aynı).
Patrick

2
@Patrick Ctrl + D aslında akışa bir Dosya Sonu göstergesi gönderir. Uygun şekilde yanıt vermek programa bağlıdır (genellikle dosya akışını kapatır).
Chris S,

STDIN'i kapatan şey budur. Boru / akım kapatılmadan EOF elde edemezsiniz.
Patrick

9
Üç sayımda yanlış, Patrick. İlk önce: Control + D'nin borular için bu anlamı yoktur. İkincisi: EOF özel karakteri hiçbir şeyi kapatmaz. Geçerli sistem çağrısından bir kez sıfır baytlık (satır arabelleğinin boş olduğu varsayılarak) dönmesine neden olur read(). Bir sonraki read()s etkilenmez. Üçüncüsü: Bunların hiçbiri , çizgi disiplinini son birkaç on yıldaki çoğu kabuk programları ve hatta GNU gibi bir kütüphane kullanan diğer programlar gibi kanonik olmayan bir moda sokan programlar için geçerli değildir readline.
JdeBP


11

Yazarken uzun bir komutu iptal etmek için, bazen satırın başlangıcına atlarım ve enter tuşuna basmadan önce bir yorum işareti eklerim:

Home#Enter

Pos1#Return

Bu, örneğin uzun bir yolla bir copy komutu yazdıysam ve bu arada, ilk önce dizini oluşturmam gerektiğini ama sonradan komutu tekrarlamak istediğimi gözlemlerseniz kullanışlıdır. Öyleyse onu tarihten alıp, karmayı silmek ve girmek zorundayım.

Bash’de kısayolu kullanabilirsiniz.

Alt+#

komutunu yeniden yorumlamak için, yorumlarda belirtildiği gibi (Thanks, @Zorawar).


6
Ctrl-AParmaklarınızı giriş satırından çekmeden de kullanabilirsiniz .
Dietrich Epp

1
Ve Ctrl-Ebu arada, sonuna kadar gider.
Dave

@Dave: Doğru, ancak komutunuzu onaylamak için enter tuşuna basıp sonuna kadar gitmenize gerek yok. Komut satırı, editör değil, yeni bir satır ekleyebilir.
kullanıcı bilinmeyen

2
Kısacası, sadece şu tuşa basarak aynı şeyi başarabilirsiniz Alt-#: yorumu ekler ve komutu çalıştırır (öykünüze koyarak).
Zorawar

8

Genel olarak konuşmak gerekirse, program sonlandırmak için etkileşimli bir yol sunmadığında Ctrl+ kullanmak Ciyidir (tasarım yoluyla veya daha sık, çünkü donmuş veya kullanılamaz hale gelir). Sadece etkileşimli moddayken, gerçekten istediğiniz tuş kombinasyonunun girişin sonunu işaret eden bir Ctrl+ Dgönderdiğini aklınızda bulundurun EOF.


1

Bash kullanıyorsanız, biri de kullanabilir Ctrl- Zve bg"geçerli işi arka plana koymak" için yazabilirsiniz .


0

@Patrick'in kabul ettiği cevapla ilgili yorumunda söylediği gibi,

Kullanıcıdan Ctrl+Dgirdi okuyan programlar için de var . Ctrl+DSTDIN'i programa kapatır.

Bu Ctrl+Ckullandıktan sonra komut satırını geri almak için işe yaramadı bana yardımcı oldu>>

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.