Yanıtlar:
Ctrl+ Tuşlarına basın Rve yazın ssh
. Ctrl+ Raramayı en son komuttan eskisine (ters arama) başlatır. Başlayan birden fazla komutunuz varsa, eşleşmeyi bulana kadar tekrar ve + ssh
tuşlarına basın .CtrlR
Eşleşmeyi bulduğunuzda, Enterkomutu çalıştırmak için basabilir veya komutun metnini seçmek için sol / sağ imleci kullanabilirsiniz.
Aramanın yönünü tersine çevirmek için Ctrl+ Riçin varsayılan bir ters seçenek yoktur , ancak burada bununla ilgili bazı öneriler bulacaksınız.
Yukarıdakilerin hafif bir varyasyonunu yapıyorum, benim için iyi çalışıyor (bash tarihinize atıfta bulunuyorsanız)
Giriş klasörümde adlı bir dosya oluşturdum
.inputrc
İçinde bu gider
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Not: Yukarıdakiler 14.04'te artık çalışmıyor gibi görünüyor, bu da aynı şeyi yapıyor.
"\e[A":history-search-backward
"\e[B":history-search-forward
Sonra bir önceki komutun çoğunu yazsam, keşke / yukarı / sayfa dn düğmelerini kullanarak her zaman sayfadan başlayarak geçmişi arar.
Klasik komutları kullanan başka bir yöntem daha var (dağıtımlar arasında çalışma olasılığı daha yüksektir). Komut geçmişi, .bash_history
ana dizininizdeki dosyada saklanır , böylece bunu yapabilirsiniz:
grep "ssh" ~/.bash_history
Büyük -i
küçük harf duyarsız aramaya ihtiyacınız varsa , bayrağınızı unutmayın .
history | grep ssh
Sadece geçici seansın ssh'ını göstereceğim bu yüzden bu cevabı bulacağım
Aşağıdaki işlevi İnternette bir yerde buldum ve onu büyük etki için kullandım. Bunu içine koy ~/.bashrc
:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
Şimdi kabuk yeniden yüklemek: exec bash
. Artık böyle kullanabileceğiniz yeni bir komutunuz var:
hgrep ssh
Size tarihinizden eşleşen komutların bir listesini gösterecektir. Bir komutu çalıştırmak için !
önce komut numarasını yazın. İşte bir örnek:
~:$ hgrep scp
207 tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
421 tn scp scott-laptop __HOST__:Scott\ Severance.asc .
422 tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
468 tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
469 tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
470 scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207
Bu yaklaşımı Ctrl+' dan daha çok seviyorum Rçünkü çok daha esnek aramalara izin veriyor ve aynı anda birden fazla sonuç görebiliyorum.
Eğer kullanmak Emacs kabuk ( M-x shell
kullanabilirsiniz) M-r
(bu eşdeğerdir Ctrl+ Rbir terminalde ).
Geçmiş iyi ama sınırlı - bash ortamımı kurmayı tercih ediyorum, böylece çalıştırdığım tüm komutları, içinde çalıştıkları dizine ek olarak kaydederim. Tüm komutları listelemek için bir komut çalıştırırım. Şu anki dizinde çalıştım, grep vs 'ye yönlendirebilirim - buna' dish 'denir: bkz:
https://github.com/wolfwoolford/dish
Kovalamayı kesmek istiyorsanız, sadece bunu .bashrc içinde kaynaklayın ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
Dizin ne olursa olsun, çalıştırdığınız her komutu yazdıran ücretsiz 'dishg' veya dish global olarak alabileceğiniz gerçekten yararlı bir komut var. Açıkçası bu sadece grep ve tail vb. İle kullanıldığında yararlıdır ...
Yıllardır kullanıyorum ve ne zaman yeni bir kutu kurarsam kuracağım ilk şey. Metin dosyalarına sakladığınız komutları gizli bir dizinde (~ / .dish) kaydeder. Disk alanıyla ilgili bir sorunum olmadı ...
Bunu @ssmy'ye yorum olarak yazmak istedi, ancak yorumdaki biçimlendirmeyi işbirliği yapamadı.
İle tarih boyunca arama yaptıktan sonra history | grep ssh
o zaman örneğin bir ünlem işareti ile de başa sayısını, yazarak dilek komutunu çalıştırabilirsiniz size !42
.
Örnek:
$ geçmiş | grep ssh 5 ssh Instagram Hesabındaki Resim ve Videoları me@someserver.net 13 ssh me@someotherserver.net 42 ssh Instagram Hesabındaki Resim ve Videoları me@thisone.com 42 dolar