Komut geçmişinden komut satırı tamamlama


84

Bu yüzden, tarihe ve Ctrl+ 'ya baktım R, fakat bildiğim kadarıyla onlar değildi. Bir komutun başlangıcına yazıp bir bash kısayoluyla geçmişimdeki eşleşmeler arasında geçiş yapmamın bir yolu var mı?

# mysq(some shortcut key)

Bana verir:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p

Not: Masaüstünde tty'ler için '<kbd> Alt + Tab </kbd>' var.
AslaMind9

Yanıtlar:


90

Ctrl+ ' Ya basmak Rters geçmiş aramasını açar. Şimdi komutunuzu yazmaya başlayın, bu ilk eşleşmeyi verecektir. Ctrl+ RTuşuna tekrar basarak (ve tekrar) tarih boyunca geçiş yapabilirsiniz.

mysq(Ctrl+R)

Verecek:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ Rtekrar:

mysql -u ben.dauphinee -p

5
Teşekkürler. Ayrıca, Esc seçili komutu çalıştırmadan komut satırınıza koyar, Enter ise seçilen komutu çalıştırır.
Ben Dauphinee

3
Bunun için CTRL + E'yi ESC'den daha iyi buluyorum, çünkü kaçış için ulaşılması zor ama zaten CTRL + R'ye çarpıyorum, bu yüzden E burada. Bu ayrıca imleci satırın sonuna yerleştirir ve bu da ortak bir durum olarak bulduğum bir şeyi (dosya adı gibi) değiştirmek istediğimde kullanışlıdır.
Sorpigal

Ne yazık ki, bu Cygwin
ATorras

2
Mac'te, en azından, mysq(CTRL+R)(CTRL+R)"mysq" ile başlayan komutlar arasında geçiş yapmadığı görülüyor. Bunun (CTRL+R)mysq(CTRL+R)yerine yapmanız gereken
BlueRaja - Danny Pflughoeft

62

Gilles söylediklerimden yola çıkarak gerekirse, benim de şu var .inputrc/ aşağı ok tuşu ve yukarı bağlamak history-search-backwardve history-search-forward:

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

Sadece bir şey yazın (isteğe bağlı), daha sonra yazdıklarınızla başlayan komutları aramak için yukarı / aşağı ok tuşlarına basın.

Bunun .bashrcyerine bunu yapmak .inputrciçin kullanabilirsiniz:

bind '"\e[A": history-search-backward'

3
bu bağlanma ~ / .inputrc'a aittir ... tembelliğimi desteklediğiniz için teşekkürler.
Martin Zeitler

'\ E' nin en azından bas debutanları için çok önemli olduğuna dikkat etmek gerekir. Komutunuz için tuşa basmak için sadece Ctrl-V tuşlarına basmak tüm hikayeyi anlatmıyor. Örneğin, Ctrl-V Meta-P (yani, Alt-P) yazdığınızda, istediğiniz davranışı elde etmek için "^ [" yerine '\ e' yazınız.
MrMas

@Syslogic ile hemfikir olun - satırları .inputrc içine koyun ve ciltleme ile tek tırnak işaretlerini bırakın.
MrMas

bunu osx'ta .inputrc'ye kopyalayarak yapıyorum, şunu elde ederim: kaynak ~ / .inputrc -bash: \ e [A :: komutu bulunamadı -bash: \ e [B :: komutu bulunamadı -bash: \ eOA :: command bulunamadı -bash: \ eOB :: komut bulunamadı
Kedi Walrus

1
Bkz superuser.com/questions/241187/how-do-i-reload-inputrc . Dosyayı kaynaklayamazsınız.
raychi,

7

PAGEUPBir komutu otomatik olarak tamamlamak için düğmeye de basabilirsiniz . Temelde bash_historydosyayı arar .


İçeri iki satır uncomment zorunda /etc/inputrcya da bu iki satırı ekleyin $HOME/.inputrc: Dosya "\e[5~": history-search-backward "\e[6~": history-search-forward
garlix

5

Sen taleb komutları kullanabilirsiniz history-search-backwardve history-search-forwardÖnceden yazdığınız öneki ile başlayan komutları satır aralarında gezinmek için. Bu komutların hiçbiri varsayılan yapılandırmadaki tuşlara bağlı değildir.

Zsh (zle) benzer komutlara sahiptir history-beginning-search-backwardve history-beginning-search-forwardayrıca varsayılan olarak tuşlara bağlı değildir. Orada da history-search-backwardve history-search-forwardönek bakılmaksızın imleç konumunun aramak gibi güncel komutunun ilk kelimesini kullanan,.


4

Benzer komutlara genel bir bakış için aşağıdakileri içeren bir liste alabilirsiniz:

history|grep KEYSTRING

Sonra, farenizin orta düğmesiyle kopyalayıp yapıştırın.

Rgds - Joe

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.