Czy jest lepszy sposób na przeszukanie mojego pliku historii pod kątem polecenia niż grep? Mam pojęcie, od czego zaczyna się to polecenie, ale nie wiem, jak daleko sięga do historii.
aktualizacja: poprzednio była specyficzna dla Zsh, ale ze względu na nakładające się odpowiedzi możesz tutaj odpowiedzieć na dowolną powłokę (lub tryb (vi / emacs)), zwróć uwagę, czy jest specyficzna.
shell
command-history
ksenoterracid
źródło
źródło
<kbd>Ctrl+R</kbd>
. źródło odpowiedziKorzystając z Bash, wpisz Control- Ra następnie zacznij pisać. Wpisywanie Control- Rkilkakrotnie po wprowadzeniu tekstu przesunie Cię z powrotem do pasujących wierszy poleceń.
źródło
Nie jestem pewien, czy to pomoże, ale lubię używać ctrl- ra następnie zacząć pisać polecenie. Powinien przejrzeć twoją historię i zaprezentować ci pierwszy mecz. Aby przełączać mecze, po prostu naciśnij ctrl- rponownie.
źródło
Jeśli dodasz następujące do
~/.inputrc
i ponownie uruchom Bash, możesz zacząć pisać, a następnie użyć Page Upi, Page Downaby przejść do tyłu i do przodu w historii linii zaczynając od tego samego przedrostka, który właśnie wpisałeś.
(Niektórzy wolą używać
\e[A
i\e[B
, który zastąpi normalne Upi Downakcje zamiast przypisywania nowych kluczy.)źródło
Alt + Up
iAlt + Down
. W zależności od emulacji klawiatury, którą emuluje terminal, te kombinacje mogą być mapowane na\E[A
i\E[A
(np. Konsola KDE z Linux Key Bindings) lub\E[1;3A
i\E[1;3B
(np. Terminal XFCE lub Konsola KDE z X Free 4 Bindings).Interaktywny monit wywoływany przez Ctrl- R, o którym już wspomniano, jest najwygodniejszym sposobem. Ponadto popularne jest mapowanie klawiszy strzałek Upi Downprzeszukiwanie historii w celu znalezienia prefiksu aktualnie w wierszu poleceń, jednak wymaga to pewnych zmian w
~/.inputrc
pliku .Klasycznym i mniej interaktywnym rozwiązaniem jest użycie rozszerzenia historii powłoki. Pisanie na maszynie
wykona ostatnie polecenie, które zaczyna się od
foo
iwykona ostatnie polecenie, które zawiera
foo
. Więcej informacji na temat rozszerzania historii można znaleźć w podręczniku Bash , zakładając, że twoja powłoka jest Bash lub kompatybilna.źródło
Jeśli dodasz
stty -ixon
do swojego~/.bashrc
pliku, wówczas Ctrl- spójdzie w przeciwnym kierunku do Ctrl- r.źródło
C-s
do tego celu, ale mój terminal zamarzł ; strzec się! (Cóż, jeszcze nie zatrudniłemstty ixon
, nie jestem pewien, po co to jest.)C-q
„ odmrozi ”. JestC-s
to zwykłe oprogramowanie sterujące przepływem znaków, które kiedyś było przydatne do ręcznego przerwania (pauzy) przepływu wyjściowego, gdy zastosowano wolne połączenia szeregowe. Teraz wyjście jest tak szybkie w większości przypadków, że to, co chcesz zobaczyć po naciśnięciu,C-s
zostało już przewinięte.stty -ixon
wyłącza kontrolę przepływu oprogramowania.Jeśli wpiszesz,
!ls
bash przejrzy twoją historię i wykona ostatnie polecenie zaczynające się na „ls”źródło
może być specyficzny dla Zsh. Badając tę odpowiedź , znalazłem,
vi-history-search-backward
który pozwala przeszukiwać /w trybie vi (o którym nie wspomniałem, że jestem w), a następnie możesz używać ni Nprzeszukiwać odpowiednio do przodu i do tyłu (po naciśnięciu enter).źródło
Dziwię się, że o tym nie wspomniano - ale możesz wybrać tryb vi w bash lub ksh, wykonując następujące czynności:
... lub używając tego jako zawartości
~/.inputrc
(dla readline GNU używanego w programach takich jak bash):Następnie możesz użyć, Escaby przejść do trybu poleceń i użyć, kaby cofnąć się w historii i jprzejść do przodu. Możesz także wyszukiwać za pomocą, /aby wyszukiwać normalnie i ?wyszukiwać wstecz.
Jeśli użyjesz
~/.inputrc
, to zadziała nie tylko w GNU bash, ale we wszystkim, co korzysta z readline GNU, takim jak CLISP i ewentualnie programy, takie jak powłoka poleceń MySQL i powłoka CPAN.źródło
Aby przejść do przodu podczas korzystania z wyszukiwania wstecznego (z poleceniem Ctrl-R):
Otwórz plik .bashrc:
sudo gedit ~/.bashrc
dodaj ten wiersz (literę „f” można zastąpić inną, jeszcze nie używaną przez system)
source ~/.bashrc
lub. ~/.bashrc
TERAZ MOŻESZ PRZESUWAĆ HISTORIĘ W SKRÓCIE: Ctrl + f
Praca na Ubuntu 18.04 LTS
źródło
Najczęściej używam następujących dwóch.
Pamiętaj jednak, że obaj szukają początkowych znaków.
fc -e - <SPACE>
<first few char for your previous >
tego spowoduje uruchomienie ostatniego polecenia pasującego do tej sekwencji.Nie mogłem znaleźć czegoś takiego jak Ctrl+ Rw Bash dla mojego ksh i tcsh.
źródło
set -o emacs
tryb, w drodze.Istnieje sposób użycia Ctrl- Rz tcsh . Dodaj następujące elementy do
~/.cshrc
:bindkey "^r" i-search-back
(to tylko znak karetki i litera r)To dla mnie największa oszczędność czasu.
źródło
podobna odpowiedź do @ephemient, ale możesz umieścić w swoim .bashrc
i wpisz część frazy, a następnie użyj strzałki w górę / w dół, aby przejrzeć najnowsze pasujące opcje. Jest to domyślne zachowanie Matlaba.
Dla większości ludzi, jeśli chcesz przenieść swoje ustawienia do nowego systemu, łatwiej jest pamiętać, aby zaczepić tylko
~/.bashrc
to, że musisz zaczepić to~/.inputrc
źródło
Tak, istnieje, przynajmniej jeśli używasz zsh. Po prostu zacznij wpisywać polecenie, a następnie naciśnij M-p( ESC p), a znajdziesz poprzednie polecenia pasujące do wpisanego tekstu . Naciśnij ponownie, aby znaleźć następny mecz.
źródło