Linux'ta bir kabuk / terminal üzerinde yanlış yazılmış görünmez bir şifreyi sil / sil


75

Linux'un terminalini kullanarak beni rahatsız eden şeylerden biri, ssh çalıştırdığınız zamanki gibi görünmez bir şifre yazmam gerektiği zamanları . Bazen bir veya daha fazla harfi yanlış yazar ve sonra tekrar başlamak için her şeyi sildiğimden emin olmak için geri silme tuşuna birkaç kez basmam gerekir.

Bunun önemli olmadığını biliyorum ama geçen gün CTRL + L tuşlarına basmanın terminali "temizlediğini" öğrendim, çünkü geri döndüğüm noktaya güvenmeden görünmez şifreyi silmenin / silmenin bir yolu olup olmadığını merak ediyordum. Tekrar deneyin.

Yanıtlar:


70

Sadece ctrl+ yazmanız gerekir u.

Enjoy =)


Bunu asla bilemedim. Genellikle sadece ortada yazarak istenmeyen bir komuttan ctrl + C tuşlarına basardım.
Spidey

10
Neler olduğunu bilmek istiyorsanız diğer cevabımdaki açıklamasına bakınız.
Jim Paris

Ctrl + W kullanıyorum ve oldukça iyi.
12'de

108

Bunun zaten cevaplandığını biliyorum, ama cevap neler olduğunu açıklamıyor.

Ctrl+ Gibi karakterler uygulamaL tarafından ele alınır . Kabuğa girdi girişi durumunda olduğu gibi ekranı temizler. Bazı uygulamalar, ekranı yeniden çizmek ve / veya imleci yeniden girmek için kullanır.bashemacs

Şifre isteminde Ctrl+ gibi karakterler TTY hattı disipliniU tarafından ele alınmaktadır . Giriş terminali "kurallı" satır düzenleme modundayken çalışacaklardır, bu, bir şifre girerken programlarınızın hangi modda olduğu. Bu modda, bu karakterleri yorumlayan Linux çekirdeğinin kendisidir. Çıktıdaki hangi tuşlara hangi işlevlerin atandığını görebilirsiniz :stty -a

speed 38400 baud; rows 45; columns 128; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Burada Ctrl+ ' Unın bağlı olduğunu görebilirsiniz kill( stty man sayfasına göre ) "mevcut satırı silecektir". sttyBu eşlemeyi değiştirmek için de kullanabilirsiniz :

stty kill ^E   # make ctrl-e erase the line

Bu sayfa , ilgileniyorsanız TTY katmanı hakkında pek çok harika bilgi içeriyor.


Şeyler yeterince kafa karıştırıcı olmasaydı: interaktif bir isteminde zaman bash, aslında konum değil "kanonik" hat-düzenleme modunda. Bunun yerine, bashyazdığınız her karakteri doğrudan alıyor ve kontrol dizilerini okuma satırı kitaplığı aracılığıyla yorumluyor . Bu kütüphane , terminal cihazınızda belirlediğiniz eşlemeleri onurlandıracaktır, böylece sttybunları değiştirmek için yine de kullanabilirsiniz . Veya, dosya içinde özelliği bashayarlayarak bunları bağımsız olarak içeride ve diğer okuma satırı tabanlı programlarda özelleştirebilirsiniz . Daha fazla bilgi için bash man sayfasına bakın .unix-line-discard~/.inputrc

Bir programı çalıştırdığınızda , daha önce etkinleştirildiyse bashkurallı çizgi düzenleme modunu ( stty icanon) yeniden etkinleştirir ve program bittiğinde tekrar devre dışı bırakır ( stty -icanon).


Teşekkürler, bu benim tilda / yay 'erase' sorunumu bulup düzeltmeme yardımcı oldu!
Thomas Hesse,
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.