Bash geçmiş arama, kısmi + yukarı ok

121

Aradım, ancak bu konuda bir şey bulunamadı. Bir terminal kullanarak bash'da bir işlevsellik arıyorum.

Geriye döndüğümde, bir debian sistemde bir kullanıcı vardı ve bir arkadaşım bana uygun bir geçmiş arama özelliği ayarladı (daha sonra tcsh kullandım sanırım), bir önceki komutun başlangıcını yazacağım, vur -arrow, ve kısmi dizgeye dayalı bir arama yapardı.

Örn. eğer tarihim ise:

./script.pl
./script.pl arg1
cat output
cat output | grep yada

Ve . yazıp yukarı-ok tuşlarına basın, bana şunu gösterir: ./script.pl arg1 . Tekrar basın ve ./script.pl , vb. Gösterecektir.

.bash_history'de grep gerçekleştirir. Bu işlevselliği elde etmenin bir yolu var mı?

    
sordu TLP 03.09.2011 14:11

5 cevap

170

Aşağıdaki satırları ~/.inputrc dosyanıza koyun:

## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward

# ile başlayan satırlar yorumlar. Geriye neyin ne olduğunu hatırlayamıyorum. Onunla deney yapın. Belki de geriye ve ileriye geçmelisiniz.

Biraz arka plan bilgisi:

Bash, istemi işlemek için readline kullanıyor. ~/.inputrc , readline için yapılandırma dosyasıdır. Bunun ayrıca readline kütüphanesini kullanan diğer yazılımlarda da etkili olacağını unutmayın, örneğin IPython .

Okuma hakkında daha fazla bilgi için bash el kitabını okuyun. Orada daha fazla geçmişle ilgili readline komutları da bulabilirsiniz.

Ok tuşlarının çıkış kodlarını almak için aşağıdakileri yapabilirsiniz:

  1. Bir terminalde cat 'yi başlat (yalnızca cat , başka argüman yok).
  2. Klavyede tuşlar yazdığınızda, yukarı ok için% co_de, aşağı ok için% co_de gibi şeyler elde edersiniz.
  3. ^[[A değerini ^[[B ile değiştirin.
verilen cevap lesmana 03.09.2011 15:31
23

Aşağıdaki içerikle /etc/profile.d/ içinde 644 ile setup_readline.sh adlı bir dosya oluşturun, giriş yapın ve tercih ettiğiniz anahtarları kontrol edin:

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

Bunu yapmanın en iyi yolu bence. Çoğunlukla şef, kukla, vs gibi yapılandırma yönetim sistemlerini kullanıyorsanız

Ve sistem yapılandırması hala el değmemiş!

    
verilen cevap user287613 02.06.2014 09:58
13

Ctrl + R size bu tür bir işlevsellik kazandıracak. Kısmi bir komut yazmaya başlayın ve yukarı ve aşağı oklarla gezinebileceğiniz eskilerle gelecektir. Daha fazla bilgi: İşte

    
verilen cevap Andrew Moss 03.09.2011 14:17
4

12.04 güvencem altında oluşturmam gereken "~ / .inputrc" ile ilgili lesmana'nın cevabını tamamlamak için, "~ / .bashrc" yi doğrulayın / ekleyin (ilk satır "~ / .bashrc" içinde zaten var):

shopt -s histappend  
PROMPT_COMMAND='history -a'  

Fransızca'da zaten İşte 'de açıklanmıştır.

    
verilen cevap bcag2 14.10.2015 10:31
0

Belki de, metriklere dayanan Bash geçmişinin basit ve çok satırlı basit filtrelemesini sağlayan İşte 'yi deneyebilirsiniz. (ne sıklıkta ve komut uzunluğunun önemli olduğu) - geçmişi kolayca bulmak için ok tuşlarını kullanabilirsiniz:

Kolayca ciltlenebilir ile Ctrl-r arasında olabilir ve / veya Ctrl-s

    
verilen cevap Martin Dvorak 29.08.2018 00:01

Etiketlerdeki diğer soruları oku