Daha önce kullandığım komutlar için komut satırı geçmişimi nasıl ararım?

147

Geçmişi görüntülemenin dışında, geçmişimi filtrelemenin bir yolu var mı?

"ssh" ile başlayan bir komutu aramak istediğimi söyleyebilir miyim?

    
sordu Blankman 02.11.2011 02:25

10 cevap

229

Ctrl + R tuşlarına basın ve ssh yazın. Ctrl + R , en son komuttan eskisine (geriye doğru arama) kadar arama başlatır. % Co_de% ile başlayan birden fazla komutunuz varsa, eşleşmeyi bulana kadar tekrar Ctrl + R tuşlarına basın.

Eşleşmeyi bulduğunuzda, komutu çalıştırmak için Enter tuşuna veya komutun metnini seçmek için sol / sağ imlecine basabilirsiniz.

Ctrl + R için arama yönünü tersine çevirmek için varsayılan bir ters seçenek yoktur, ancak burada bu konuda bazı öneriler bulacaksınız.

    
verilen cevap Prince John Wesley 02.11.2011 02:32
76

Sadece geçmişinizi aramak istiyorsanız, arama yapmak istediğiniz her şey için ssh yerine history | grep ssh kullanabilirsiniz.

    
verilen cevap ssmy 02.11.2011 02:36
13

Ctrl + R basıldığında "ters-i-arama" modu başlar, "ssh" yazarak "ssh" içeren komutlar için geçmişinizi arar.

    
verilen cevap Sergey 02.11.2011 02:33
13

Yukarıdakilerin küçük bir varyasyonunu yapıyorum, benim için iyi çalışıyor (eğer bash geçmişinize atıfta bulunursanız

Ev klasöründe

adlı bir dosya oluşturuyorum
.inputrc

İçinde bu gider

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Not: Yukarıdakiler 14.04'te artık işe yaramıyor gibi görünüyor, bu da aynı şeyi yapıyor -

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

Daha sonra bir önceki komutun çoğunu yazarak diliyorum & amp; sayfa yukarı / sayfa dn düğmelerini kullanarak, her zaman sayfa yukarıdan başlayan geçmişi arar.

    
verilen cevap doug 02.11.2011 02:42
5

İşte klasik komutları kullanan başka bir yöntem (daha çok dağıtımlarda çalışabilme olasılığı). Komut geçmişi, giriş dizininizdeki .bash_history dosyasında saklanır, böylece şunları yapabilirsiniz:

grep "ssh" ~/.bash_history

Büyük / küçük harf duyarlı olmayan bir aramaya ihtiyacınız varsa -i bayrağını unutmayın.

    
verilen cevap DisgruntledGoat 02.11.2011 10:49
2

İnternet'te bir yerde aşağıdaki işlevi buldum ve büyük bir etki için kullandım. Bunu ~/.bashrc dosyanıza koyun:

hgrep () { 
    history | egrep --color=auto --recursive "[email protected]" | egrep --color=auto --recursive -v "hgrep [email protected]"
}

Şimdi kabuğunuzu yeniden yükleyin: exec bash . Artık şu şekilde kullanabileceğiniz yeni bir komutunuz var:

hgrep ssh

Size, geçmişinizden eşleşen komutların bir listesini gösterir. Bir komutu çalıştırmak için, ! ve ardından 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 + R 'den daha iyi seviyorum çünkü çok daha esnek aramalara izin veriyor ve aynı anda birden fazla sonuç görebiliyorum.

    
verilen cevap Scott Severance 09.11.2011 04:14
2

Bunu ~/.bashrc dosyanıza koyun:

  

alias hgrep = 'geçmiş | grep --color = otomatik '

örnek:

    
verilen cevap hadj messaoud 15.10.2017 12:59
1

Emacs dosyasında kabuk kullanırsanız ( M-x shell ) M-r değerini kullanabilirsiniz (bu, Ctrl + R değerine eşdeğerdir. Terminal ).

    
verilen cevap N.N. 26.08.2012 17:33
1

Geçmiş iyi fakat sınırlı - Çalıştığım dizine ek olarak, çalışmakta olduğum komutların tümünü günlüğüne kaydedeceğim, böylece bash ortamımı kurmayı tercih ediyorum. Geçerli dizinde yürüttüğüm tüm komutları listelemek için bir komut çalıştırıyorum, ki bunu grep'e vs pipetleyebilirim - buna 'yemek' denir:

İşte

Eğer takip etmek istiyorsanız, bunu sadece .bashrc’de ( İşte ) belirtin.

Ayrıca, dizinden bağımsız olarak, çalıştırdığınız her komutu yazdıran 'dishg' - veya global olarak adlandırılan - ücretsiz olarak adlandırılan gerçekten kullanışlı bir komut da var. Açıkçası bu sadece grep ve kuyruk vb. İle kullanıldığında kullanışlıdır ...

Yıllarca kullanıyorum ve tam anlamıyla yeni bir kutu kurduğumda yüklediğim ilk şey. Gizli bir dizinde (~ / .dish) metin dosyalarına çalıştırdığınız komutları kaydeder. Disk alanıyla ilgili hiçbir sorun yaşamadım ...

    
verilen cevap David Woolford 26.08.2018 01:53
0

Bunu bir yorum olarak yazmak istedim @ ssmy , ancak yorumlarda biçimlendirmeyi iş birliği yapamadı.

Geçmişi history | grep ssh ile aradıktan sonra, istediğiniz ismi, bir ünlem işareti ile eklenmiş olan numarayı yazarak, örn. % Co_de%.

Örnek:

$ history | grep ssh
  5 ssh [email protected]
 13 ssh [email protected]
 42 ssh [email protected]
$ !42
    
verilen cevap magikMaker 31.01.2018 22:12

Etiketlerdeki diğer soruları oku