Okurken geri tuşu nasıl kullanılır?


10

Girilen arka boşlukları nasıl idare edebilirim, zaten 5 karakterde olduğu gibi (hepsi gerçek giriş ^?olmasa da) denendi mi ve readkarakterleri sayarsa gösterir 12^?3, ancak 12^?3^?komut istemini döndürdükten sonra gariptir. Lütfen yardım et!

-bash-3.2$ read -n 5
12^?3^?-bash-3.2$

Yanıtlar:


10

Düzle read(veya read -rbu davranışı etkilemeyen diğer seçeneklerle) bir satırı okuduğunuzda , çekirdek tarafından sağlanan satır düzenleyicisi, Backspacebir karakteri ve çok az sayıda başka komutu ( Returngirişi bitirmek dahil) silmek için anahtarı tanır satır ve gönderin). Kısayol tuşları olabilir yapılandırılmış olan sttyprogramı. Terminalin, hat düzenleyicisi etkinken pişmiş modda olduğu söylenir. Ham modda, klavyeye yazılan her karakter derhal uygulamaya aktarılır. Pişmiş modda karakterler bir arabellekte saklanır ve uygulamaya yalnızca tam satırlar iletilir.

Uygulamak için sabit sayıda karakterden sonra okumayı durdurmak için read -nbash'ın ham moda geçmesi gerekir. Ham modda, terminal Backspaceanahtar üzerinde herhangi bir işlem yapmaz (bastığınız zaman Backspace, önceki karakter bash'a zaten gönderilmiştir) ve bash da herhangi bir işlem yapmaz (muhtemelen daha büyük esneklik sağlar komut dosyasının kendi işlemesini yapmasına izin verme).

-eBash'ın kendi çizgi düzenleyicisini etkinleştirme seçeneğini (çekirdeğin son derece kaba olanı gibi değil, uygun bir çizgi düzenleyicisi olan readline) etkinleştirebilirsiniz. Bash satır baskısı yaptığından, istenen sayıda karaktere sahip olduğunda okumayı durdurabilir.


9

Kullanım read -e:

$ read -e -n 5
13acX

read -e anlamına gelir:

Satırı elde etmek için Readline (bkz. Komut Satırı Düzenleme ) kullanılır.

Bunu yaptığınızda, girişi geri boşluk dahil olmak üzere normal kabuk istemine yazarken yapacağınız yöntemlerden herhangi birini düzenleyebilirsiniz Home.


1

readbir bash yapılıdır. (bkz type read.) Şunlarla belgeler bulabilirsiniz man bash:

   read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
   [...]
          -e     If the standard input is coming from a terminal, readline (see READLINE above) is used to obtain the line.
                 Readline uses the current (or default, if line editing was not previously active) editing settings.

veya şunları kullanabilirsiniz help read:

read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
      -e                use Readline to obtain the line in an interactive shell

-eAnahtar temelde geri al elleçleme dahil tüm kabuk istemi mevcut özellikleri verir taleb destek sağlar.

Bu nedenle read -en 5istediğinizi yapmalısınız.


-e sorunu çözüyor ancak read'girilen karakter sayısını' nasıl okuyor hala cevapsız.
Keyshov Borat
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.