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

24566
Mike

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

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

22
Обратный поиск является функцией bash (и библиотек readline), поэтому я немного отредактировал заголовок и вопрос, чтобы отразить это. Doug Harris 13 лет назад 1
если вы пропустили нужную команду, выполните `CTRL + SHIFT + R`, чтобы вернуться Ricky Robinson 10 лет назад 0

2 ответа на вопрос

35
Dennis Williamson

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

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

stty -ixon 

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

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

в чем смысл stty -ixon? это отключает что-то, что может понадобиться в других ситуациях? Gregory Pakosz 12 лет назад 2
@GregoryPakosz: он отключает XON / XOFF ([управление программным потоком] (http://en.wikipedia.org/wiki/Software_flow_control)), который теперь бесполезен с клавиатуры, поскольку мы общаемся с немного более высокой скоростью, чем 300 бод. Dennis Williamson 12 лет назад 5
спасибо, погуглил некоторое время и пришел к такому же выводу, это в основном бесполезно в наши дни Gregory Pakosz 12 лет назад 0
7
Doug Harris

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

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

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

Похожие вопросы