вернуться к концу истории bash при использовании обратного поиска?

12

Я веду довольно длинную историю bash, и иногда, когда я ищу что-то с помощью функции обратного поиска bash ( Ctrl+ r), я оказываюсь в начале истории поиска, но все еще не могу найти то, что мне нужно, и затем я хочу вернуться к концу файла истории. Одним из вариантов является использование функции прямого поиска ( Ctrl+ s), которая перемещается ближе к концу истории или выполнения #, но есть ли комбинация клавиш для перехода непосредственно к концу истории bash?

Мартин
источник
2
historyпокажет вам все команды bash, сделанные ..
ryekayo

Ответы:

6

Существует функция readline end-of-history, по умолчанию сопоставленная с M- >, но если она используется во время обратного поиска, она выходит из запроса обратного поиска.

Возможный обходной путь / уловка

Начать поиск строки

Вместо этого, чтобы использовать обратный поиск, вы можете использовать history-search-backwardи history-search-forward(по умолчанию не сопоставлено), сопоставляя их up/down(очень полезно) в вашем .inputrc:

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

Таким образом, после того, как вы набрали, вы можете отменить поиск нажатием up (вместо Ctrl+ R), а когда вы хотите вернуться в конец истории, вы можете использовать end-of-historyфункцию, нажав ( M- >)

Таким образом, «Строка поиска должна совпадать в начале строки истории », поэтому, если вы ищете ls -ltr, вы должны ввести, lsа затем нажать  upклавишу.

Поиск подстроки

если вы хотите, чтобы « строка поиска могла совпадать в любом месте строки истории », вы должны использовать history-substring-search-forward и history-substring-search-backward:

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

Таким образом, если вы ищете ls -ltr, вы можете ввести ls, но также ltr, прежде чем нажать up.

Справочник: Справочное руководство Bash - Команды для истории .

lgaggini
источник