(обратный поиск) в Bash

26

Я обычно заканчиваю тем, что использую CTRL+ rfor (reverse-i-search), однако иногда я пропускаю искомую команду; если я сделаю еще раз, (reverse-i-search)то больше не найду. Я предполагаю, что текущий указатель на историю команд находится перед командой, которую я ищу.

Кто-нибудь знает, как вернуться к самой последней команде в истории, не нажимая 1000 раз down arrow?

Майк
источник
1
Обратный поиск является функцией bash (и библиотек readline), поэтому я немного отредактировал заголовок и вопрос, чтобы отразить это.
Даг Харрис
если вы пройдете команду, которую хотели, CTRL+SHIFT+Rвернитесь
Рики Робинсон,

Ответы:

7

На stackoverflow.com есть похожий вопрос .

Лучший ответ - использовать Ctrl+Gдля отмены текущего поиска.

Даг Харрис
источник
Это действительно не лучший ответ. Лучший ответ является один дается Dennis Williamson: добавить stty -ixonв вашем .bashrc(или в каком - либо другом соответствующем файле конфигурации), а затем Ctrl-Sшаг вперед в истории, подобно тому, как Ctrl-Gшаг назад. Первое Ctrl-Sнажатие после Ctrl-Gизменения reverse-i-searchна i-search, следующее Ctrl-Sделает первый шаг вперед. Тогда каждый Ctrl-Sделает еще один шаг вперед.
Nrz
или если вы уже прекратили поиск (например, нажав Esc или клавишу со стрелкой), вы можете нажать Esc, а затем «>»
Superole
38

На самом деле, другой ответ на этот вопрос дает лучший вариант.

В вашем ~/.bashrcдобавьте следующую строку:

stty -ixon

Затем вы можете использовать Ctrl- sдля перехода вперед по истории точно так же, как вы использовали бы Ctrl- rдля перехода назад.

Это будет даже работать, чтобы начать новый прямой поиск (называемый i-searchв противоположность reverse-i-search) при просмотре истории. Предположим, вы делаете Ctrl- rи набираете какой-то текст команды рядом с пунктом назначения, затем нажимаете стрелку вверх несколько раз, выпуская то, что вы действительно искали (или вы передумали). Теперь нажмите Ctrl- sи введите несколько символов из этой строки. Zoooom! Прямо к этому.

Приостановлено до дальнейшего уведомления.
источник
2
в чем смысл stty -ixon? это отключает что-то, что может понадобиться в других ситуациях?
Григорий Пакош
7
@GregoryPakosz: он отключает XON / XOFF ( программное управление потоком ), который теперь бесполезен с клавиатуры, поскольку мы общаемся с немного более высокой скоростью, чем 300 бод.
Приостановлено до дальнейшего уведомления.
спасибо, погуглил некоторое время и пришел к такому же выводу, в настоящее время это в основном бесполезно
Грегори Пакош