cofnąć się do końca historii bash, gdy używasz wyszukiwania wstecznego?

12

Trzymam dość długą historię bashów i czasami, kiedy szukam czegoś z funkcją wyszukiwania wstecznego bash ( Ctrl+ r), kończę na początku historii wyszukiwania i nadal nie znalazłem tego, czego potrzebowałem, a potem chciałbym wrócić do końca pliku historii. Jedną z opcji jest użycie funkcji wyszukiwania do przodu ( Ctrl+ s), która przesuwa się bliżej końca historii lub wykonuje #, ale czy istnieje również skrót klawiaturowy, aby przejść bezpośrednio do końca historii bash?

Jaskółka oknówka
źródło
2
historypokaże wszystkie polecenia bash wykonane ...
ryekayo

Odpowiedzi:

6

Istnieje funkcja readline end-of-history, domyślnie odwzorowana na M- >, ale jeśli jest używana podczas wyszukiwania wstecznego, wychodzi z monitu wyszukiwania wstecznego.

Możliwe obejście / sztuczka

Rozpocznij wyszukiwanie ciągów

Zamiast tego, aby użyć wyszukiwania wstecznego, możesz użyć history-search-backwardi history-search-forward(domyślnie niezmapowane), mapując je na up/down(bardzo przydatne) w .inputrc:

# up-down arrow to search in history
"\e[A":history-search-backward
"\e[B":history-search-forward

Po wpisaniu up tekstu możesz cofnąć wyszukiwanie, naciskając (zamiast Ctrl+ R), a jeśli chcesz wrócić do końca historii, możesz użyć tej end-of-historyfunkcji, naciskając ( M- >)

W ten sposób „Ciąg wyszukiwania musi pasować na początku wiersza historii ”, więc jeśli szukasz ls -ltr, musisz wpisać, lsa następnie nacisnąć  upklawisz.

Wyszukiwanie podciągów

jeśli chcesz „ Ciąg wyszukiwania może pasować w dowolnym miejscu w linii historii ”, musisz użyć history-substring-search-forward i history-substring-search-backward:

# up-down arrow to search in history
"\e[A":history-substring-search-backward
"\e[B":history-substring-search-forward

W ten sposób, jeśli szukasz ls -ltr, możesz pisać ls, ale także ltrprzed naciśnięciem up.

Odwołanie: Podręcznik odniesienia Bash - polecenia historii .

lgaggini
źródło