Geçmiş dosyamı bir komut aramak için grep'ten daha iyi bir yol var mı? Komutun neye başladığı hakkında bir fikrim var, ama tarihin ne kadar geriye gittiğini bilmiyorum.
pdate: eskiden zsh'a özgüdür, ancak çakışan cevaplar burada herhangi bir Kabuk (veya mod (vi/emacs)) için cevap vermekten çekinmeyin, spesifik olup olmadığını not edin.
Ctrl+R tanımlayıcısının söylediği gibi genellikle en iyi yoldur.
string ile başlayan en son komutu çalıştıran
!string Veya
string içeren en son komutu çalıştıran
!?string? Kullanabilirsiniz.
(Bu soru ile ilgili tek şey olduğunu düşünüyorum, ancak bu cevaptaki tarih komutlarının çok daha fazlasını ele aldım)
Bash kullanırken şunu yazın Control-R ve sonra yazmaya başlayın. Yazıyor Control-R Bazı metinleri girdikten sonra tekrar tekrar sizi eşleşen komut satırlarına götürecektir.
Bunun yardımcı olup olmayacağından emin değilim, ama kullanmayı seviyorum ctrl-r ve sonra komutu yazmaya başlayın. Geçmişinizden geçmeli ve size ilk maçı sunmalıdır. Maçlar arasında geçiş yapmak için ctrl-r tekrar.
Aşağıdakileri
~/.inputrc
"\e[5~": history-search-backward "\e[6~": history-search-forward
ve Bash'ı yeniden başlatın, yazmaya başlayabilir ve ardından Page Up ve Page Down yazdığınız aynı önekle başlayarak satırların geçmişi boyunca ileri ve geri gitmek için.
(Bazıları
\e[A ve
\e[B, normalin yerini alacak Up ve Down yeni anahtarlar bağlamak yerine eylemler.)
Etkileşimli Bilgi İstemi Ctrl-R, daha önce bahsedilen, en uygun yoldur. Ayrıca yeniden eşlemek popüler Up ve Down komut satırında bir önek için geçmişte arama yapmak için ok tuşlarını kullanın, ancak bunun için
~/.inputrc dosya .
Klasik ve daha az etkileşimli çözüm, Shell geçmiş genişlemesini kullanmaktır. Yazıyor
!foo
foo ile başlayan son komutu yürütecek ve
!?foo
foo içeren son komutu yürütür. Geçmiş genişletme hakkında daha fazla bilgi, Kabuğunuzun Bash veya uyumlu olduğunu varsayarak Bash referans kılavuzunda bulunabilir.
stty -ixon Dosyanıza
~/.bashrc Eklerseniz Ctrl-s ters yönde gidecek Ctrl-r.
!ls Yazarsanız bash geçmişinize bakar ve "ls" ile başlayan en son komutu yürütür
Bundan bahsedilmediğine şaşırdım - ancak bunu yaparak bash veya ksh'da vi modunu seçebilirsiniz:
set -o vi
... veya bunu
~/.inputrc (GNU readline):
set editing-mode vi
Sonra bundan sonra kullanabilirsiniz Esc komut mod girmek ve kullanmak k tarihe geri dönmek ve j ileri gitmek. Ayrıca şunu kullanarak da arama yapabilirsiniz: / normal arama yapmak ve ? tersini aramak.
Eğer kullanırsan
~/.inputrc, bu yalnızca GNU bash'da değil, aynı zamanda GNU readline ve MySQL komutu Shell ve benzeri programlar gibi) CPAN Kabuğu.
Geri aramayı kullanırken ilerlemek için (Ctrl-R komutuyla):
.Bashrc dosyanızı açın:
Sudo gedit ~/.bashrc
bu satırı ekleyin ("f" harfi, henüz sistem tarafından kullanılmayan başka bir harfle değiştirilebilir)
bind '"\C-f": forward-search-history'
source ~/.bashrcveya
. ~/.bashrc
ŞİMDİ KISAYOLLA TARİHİNDE İLERLEYİN: Ctrl + f
Ubuntu 18.04 LTS üzerinde çalışma
Ben çoğu zaman aşağıdaki iki kullanın.
Ama lütfen ikisinin de başlangıç karakterleri aradığını unutmayın.
fc -e - <SPACE>
<first few char for your previous >kullanın, bu sırayla eşleşen son komutu çalıştırır.
Gibi bir şey bulamadım Ctrl+R benim ksh ve tcsh için Bash.
Kullanmanın bir yolu var Ctrl-R tcsh ile. Aşağıdakileri
~/.cshrc:
bindkey "^r" i-search-back (sadece bir işaret işareti ve r harfi)
Bu benim için en büyük zaman tasarrufu.
@ephemient için benzer cevap, ancak .bashrc içine koyabilirsiniz
bind '"\e[A": history-search-backward' bind '"\e[B": history-search-foward'
ve ifadenin bir kısmını yazın ve ardından en son eşleşen seçeneklere göz atmak için yukarı/aşağı oku kullanın. Bu matlab'ın varsayılan davranışıdır.
Çoğu kişi için, ayarlarınızı yeni bir sisteme taşımak istiyorsanız, yalnızca
~/.bashrc o zaman bunu takmanız gerektiğini
~/.inputrc
Evet, en azından zsh kullanıyorsanız var. Komutu yazmaya başlayın ve ardından M-p (ESCp) ve yazdıklarınızla eşleşen önceki komutları bulur. Bir sonraki maçı bulmak için tekrar basın.