Bash'da kişi mevcut girişi nasıl temizler?


172

Diyelim ki bash'da şöyle bir komut yazmaya başlıyorsunuz:

$ rm -rf /foo/bar/really/long/path/here

ve sonra bunu gerçekleştirmek istemediğinizi anlayın. Bir veya iki tuşa basarak girişi temizlemenin bir yolu var mı?

Son zamanlarda ne yaptım yankı bekleyen ve girdi tırnak içine (Ctrl + A echo ",, Ctrl + E, ") sonra enter enter vurmak. Daha hızlı bir yol var mı?


Ya da bir komutu yapıştırdığınızı ve bunun tek satırlık yanlış olduğunu anlayın. Backspace yaklaşık 20 karakter sonra gerçekten yaşlanıyor!
— Ocak 17:12

<kbd> Ctrl </kbd> - <kbd> C </kbd>, geçmişi korumak istiyorsanız bkz. stackoverflow.com/a/9679852/6521116
— Kris Roofe

Yanıtlar:


286
  1. İmleçten önceki her şeyi silmek için Ctrl- tuşuna basın U. Silinen komut bir arabellekte saklanır. Silinen komutu yapıştırmak için Ctrl- tuşuna basın Y.

    (İsteğe bağlı: Önce girişin sonuna atlamak için Endveya Ctrl- tuşuna basın E.)

  2. Alternatif olarak, yazdıklarınızı iptal etmek için Ctrl- tuşuna basın C.


28
Bir uyarı yok: Ctrl-C, şimdiki istemi öldürmek Yeni bir istemi başlatın ve 1. dönüş kodu ayarlayacaktır
— user716468

14
Buna alışmayın, Ctrl-U kullanın. Ctrl-C bash'de o kadar da kötü değil, ancak mysql istemi isteminiz varsa, Ctrl-C gerçekten can sıkıcı olan sunucu ile bağlantıyı kesecektir.
— Christian

1
Birçok sistemde, girişi şimdiye kadar öldüren bir terminal 'kill' karakteri olduğunu unutmayın. Çoğu zaman, bu kontrol-X'dir. İle kontrol edebilirsiniz stty -a. Ve bu, terminal kontrollerini aktif olarak değiştirmeyen herhangi bir programla çalışacaktır.
— Jonathan Leffler

Ctrl-A ardından Ctrl-K da çalışır. 'Öldürülmüş' metin saklanır ve Ctrl-Y kullanarak yapıştırabilirsiniz. Bu tuş vuruşları aslında okuma satırı kütüphanesinden gelir: cnswww.cns.cwru.edu/php/chet/readline/rluserman.html .. böylece bunları kullanıcı arayüzünün kütüphaneyi kullandığı herhangi bir araçta bulabilirsiniz (Aslında Emacs, bash, vb..). .İnputrc dosyasını düzenleyerek davranışını özelleştirebilirsiniz (daha fazla bilgi için yukarıdaki bağlantıya bakın).
— rkachach

93

Ctrl+ ' Yı deneyin U. Bu, giriş satırını temizler.


7
Teşekkürler, bunu neredeyse cevap olarak kabul ettim. Ama sadece imleçten önceki girişi temizlediğini gördüm. Bazı durumlarda komutu düzenlemenin ortasındayım, bu yüzden Ctrl + U yerine "geçerli girişi sil" olarak Ctrl + C'yi hatırlamayı tercih ederim.
— user85509


21

Ctrl- U, Ctrl- Khile de yapıyor.

Ctrl- Usatırın başından imlece kadar her şeyi siler , Ctrl- Kimleçten satırın sonuna kadar her şeyi siler. (Bazen bunlardan sadece birini kullanmak faydalı olabilir.)


13

Bunu yapmak için iki seçenek var

ctrl+ c- imlecin nerede olduğuna bakılmaksızın tüm satırı temizler.

ctrl+ u- imlecin konumundan başlangıcına kadar olan çizgiyi temizler.


2
"Cu (veya Ce ve sonra Cu) kullanmanın temizlediğinizi bir arabellekte saklayacağını düşünün, böylece daha sonra Cy kullanarak yapıştırabilirsiniz." Markisisme daha basit bir tek komut ctrl + _. stackoverflow.com/questions/1056440/… john kug tarafından cevaplandı - yeni başlayan stackoverflow size cevap eklemek için yeterli puan yok.
— vks

9

Güzel bir kısayol basıyor Esc#. Bir #karakterin başına gelir (böylece satırı bir yorum yapar) ve enter tuşuna basın. Daha sonra hala komuta ihtiyacınız olduğuna karar verirseniz, hala geçmişinizde var :)


3
Çoğu terminalde, bu aynı zamanda Alt + # ile aynıdır, bu da onu bir (akorlu) tuş vuruşu yapar.
— Dolda2000

Basit ama akıllı bir çözüm ve bence bu bir komutu iptal etmenin daha kullanıcı dostu bir yolu. Tam aradığım şey :)
— Cas

9

Basılması Escartı Backspacebash imlecin konumuna şeyi temizler.

(Cygwin'de bu, bir sonraki kelimeye kadar olan girişi temizleyecektir. Kelimeler boşluklar, alt çizgiler, ... ile ayrılmıştır.)


3

Kullanarak düşünün Ctrl- U(veya Ctrl- Edaha sonra ve Ctrl- U) Bir tampon içerisinde temizlemek neyi saklar, sonra kullanarak daha sonra yapıştırmak böylece Ctrl- Y.



3

Bu, bir karma ile önek ekleyerek satırı konsol geçmişinde saklayan knittl cevabının genişlemesidir . Yanlışlıkla üzerine yazma veya kesme çizgisini referans olarak görememe gibi panonun sakıncalarının üstesinden gelmek.

Yorum Satırı ve Yeni İstemi İade Et

Tuş kısayollarından birini kullanın:

  • Esc,#
  • Alt+#

Bir karma karakteri #satırın başına eklenecek, böylece tüm satır bir yoruma dönüşecektir. Ayrıca, kullanıcı tarafından enter tuşuna basılmış gibi yeni bir istem döndürür. Örneğin

$ #rm -rf /foo/bar/really/long/path/here
$

Yorumlanan Satırı Al

Eski satırı konsol geçmişinden kurtarmak için aşağıdaki kısayollardan birini kullanın:

  • Up
  • Ctrl+p

İstediğiniz satır görünene kadar tuş kısayolunu tekrarlayın.


Hızlı Karma Öneki Kaldırma

Satırın karma #önekini kaldırmak için birkaç farklı seçenek vardır:

İlk karakteri kaldırın ve hemen komutu yürütün:

  • Esc, 1, Esc,#
  • Alt+ -, Alt+#

Komutu çalıştırmadan ilk karakteri başlatmak ve kaldırmak için imleci hareket ettirin:

  • Home, Delete
  • Ctrl+ a, Ctrl+d

2

Geçerli satırı silmek için şunu deneyin:

Ctrl- X, Ctrl-U

Alternatif olarak şunları kullanabilirsiniz:

Esc-D

~ / .inputrc için gereken:

"\ed": kill-whole-line 

bkz. http://codesnippets.joyent.com/posts/show/1690


Sadece kaçış anahtarının tüm satır eklemesini temizlemesini istiyorsanız "\e\e": kill-whole-line(esc tuşuna çift basmak gerekir)
— binaryfunt
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.