Historia poleceń Uniksa - szybkie znajdowanie polecenia

0

Czy istnieje sposób (lub konkretna powłoka) do poruszania się po historii w następujący sposób: powiedzmy, że napisałem następujące polecenie dwa tygodnie temu:

scp ../../../file.txt ../../../...

Nie chcę używać strzałek, aby znaleźć polecenie, ponieważ zajmie to zbyt dużo czasu. Zamiast tego chciałbym napisać, aby scpzawęzić możliwości, a następnie przejrzeć historię.

użytkownik247866
źródło
2
Zauważ, że jest to funkcja twojej powłoki (bash, tcsh, zsh, fish ...), a nie „unix” w pewnym sensie ogólnym. Jeśli nie masz pojęcia, o czym mówię, prawdopodobnie odpowiednia dla ciebie będzie odpowiedź poniżej związana z bash. Lub spróbuj printenv SHELL.
dmckee

Odpowiedzi:

4

W przypadku Ctrl-r(wyszukiwania wstecz) za każdym razem, gdy trafisz Ctrl-r, przejdziesz do następnego najwcześniejszego meczu w historii, więc prawdopodobnie jest to najlepsza opcja.

Istnieją jednak również inne opcje, takie jak !operator. Jeśli ostatnie polecenie było unikalne ( scpod tego czasu nie było ponownie wykonywane), możesz użyć !scptego polecenia, które wykona ostatnie polecenie, które rozpoczęło się scpw twojej historii. Ponadto, jeśli zastosujesz history | grep scppodejście, możesz użyć !do wykonania numeru polecenia. Na przykład:

$ history | egrep scp
 268  scp foo@bar:/home/foo/file .
$ !268

To !268wykona polecenie 268 dokładnie tak, jak pojawia się na historywyjściu bez poprzedniego numeru.

ezpz
źródło
Ponadto !scppoda najnowszy wpis historii zaczynający się od „scp”
glenn jackman
3

używam

history | grep scp 

a następnie skopiuj, wklej i edytuj (jeśli to konieczne) lub po prostu ! <command number>

Scott C. Wilson
źródło
Dzięki. To jest rzeczywiście proste, powinienem o tym pomyśleć ... Użyję opcji Ctrl + r, jest szybsze.
3

Spróbuj Ctrl+rprzeszukać historię. Powinieneś otrzymać następujący monit:

(reverse-i-search)`':
William
źródło
3

Spróbuj Ctrl+r, powinno zrobić to, czego potrzebujesz.

Cédric Julien
źródło
2

mam

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

w $ HOME / .inputrc i uważam, że wiąże to zachowanie, które chcesz, z klawiszami strzałek w górę i w górę. Aby to rozwinąć, „man readline” informuje nas o wyszukiwaniu historii- {do przodu, do tyłu} weźmie pod uwagę bieżący ciąg wpisany w wierszu poleceń:

   history-search-forward
          Search  forward  through  the history for the string of characters between the start of the current line
          and the current cursor position (the point).  This is a non-incremental search.
   history-search-backward
          Search backward through the history for the string of characters between the start of the  current  line
          and the point.  This is a non-incremental search.
micans
źródło
Zleciłem to klawiszom Pg-Up i Pg-Down.
ott--
0

Użyj vinawigacji:

set -o vi
[Esc]/scp[Enter]

Naciśnij, naby przejść do następnego lub Npoprzedniego meczu. iwstawiać tekst, Adołączać

roblogic
źródło