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


186

Geçmişi görüntülemekten başka, geçmişimi filtrelemenin bir yolu var mı?

"Ssh" ile başlayan bir komutu aramak istediğimi söyleyin?

Yanıtlar:


271

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 + sshtuş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.


90

Yalnızca geçmişinizi history | grep ssharamak istiyorsanız, aramak istediğiniz her şeyi ssh ile değiştirerek kullanabilirsiniz .


Bu yöntemi kullanıyorum, çünkü listede filtrelerimle eşleşen her komutu görmek için bağlantı kuruyorum.
Pisu

15

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.


Kök izinleriniz varsa, / etc / inputrc dosyasını düzenleyebilirsiniz, böylece tüm kullanıcılar için çalışabilir.
Wolfy

1
@doug, hmm .. Ben Ubuntu 15.04. Bu çözüm işe yarıyor ama Ctrl + LeftArrow / Ctrl + RightArrow tuşlarını karıştırıyor. Sorun .inputrc dosyası oluşturmak gibi görünüyor ve içindeki girdilerle değil.
Ravi

.İnputrc'yi yeniden bağlamayı ya da terminali kapatmayı unutmayın
David Brossard

14

Ctrl+ Tuşlarına basmak R"reverse-i-search" modunu başlatır, "ssh" yazmak geçmişinizi "ssh" içeren komutlar için arar.


9

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_historyana dizininizdeki dosyada saklanır , böylece bunu yapabilirsiniz:

grep "ssh" ~/.bash_history

Büyük -iküçük harf duyarsız aramaya ihtiyacınız varsa , bayrağınızı unutmayın .


history | grep sshSadece geçici seansın ssh'ını göstereceğim bu yüzden bu cevabı bulacağım
iniravpatel

3

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.




1

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ı ...


0

Bunu @ssmy'ye yorum olarak yazmak istedi, ancak yorumdaki biçimlendirmeyi işbirliği yapamadı.

İle tarih boyunca arama yaptıktan sonra history | grep ssho 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
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.