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 scp
zawęzić możliwości, a następnie przejrzeć historię.
printenv SHELL
.Odpowiedzi:
W przypadku
Ctrl-r
(wyszukiwania wstecz) za każdym razem, gdy trafiszCtrl-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 (scp
od tego czasu nie było ponownie wykonywane), możesz użyć!scp
tego polecenia, które wykona ostatnie polecenie, które rozpoczęło sięscp
w twojej historii. Ponadto, jeśli zastosujeszhistory | grep scp
podejście, możesz użyć!
do wykonania numeru polecenia. Na przykład:To
!268
wykona polecenie 268 dokładnie tak, jak pojawia się nahistory
wyjściu bez poprzedniego numeru.źródło
!scp
poda najnowszy wpis historii zaczynający się od „scp”używam
a następnie skopiuj, wklej i edytuj (jeśli to konieczne) lub po prostu
! <command number>
źródło
Spróbuj
Ctrl+r
przeszukać historię. Powinieneś otrzymać następujący monit:źródło
Spróbuj
Ctrl+r
, powinno zrobić to, czego potrzebujesz.źródło
mam
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ń:
źródło
Użyj
vi
nawigacji:Naciśnij,
n
aby przejść do następnego lubN
poprzedniego meczu.i
wstawiać tekst,A
dołączaćźródło