В терминале я могу ввести Ctrl+ Rдля поиска соответствующей команды, ранее введенной в BASH. Например, если я введу Ctrl+, Rа затем grep
, он выведет мою последнюю grep
команду, и я могу нажать Enter, чтобы использовать ее. Однако это дает только одну подсказку. Есть ли способ циклически перебирать другие ранее введенные соответствующие команды?
решение1
Если я правильно понял вопрос, вы сможете переключаться между альтернативами, многократно нажимая Ctrl+ R.
Например:
- Ctrl+R
grep
- Ctrl+R
- Ctrl+ R ...
Это позволяет выполнить поиск назад по истории. Для поиска вперед вместо этого используйте Ctrl+ S, но вам может потребоваться установить: stty -ixon
(либо вручную .bash_profile
, либо вручную) до этого, чтобы отключить функцию XON/XOFF, которая берет на себя Ctrl+ S. Если это все равно произойдет, используйте Ctrl+ Q, чтобы снова включить вывод на экран (Подробнеездесь.)
решение2
Если вы считаете, что команда будет использоваться часто, вы можете добавить тег
command #useful
Затем
Ctrl+R #useful
Это работает, потому что #
это разделитель комментариев, т.е. все, что идет после символа, не интерпретируется как команда. Однако это будет записано в историю и, таким образом, доступно для поиска.
решение3
Вы также можете настроить стрелки вверх и вниз, чтобы выполнить немного другой поиск, добавив следующие строки в ~/.inputrc:
"\e[A": history-search-backward
"\e[B": history-search-forward
Вместо поиска подстроки в любом месте команды (например,Ctrl-r) он будет искать командуначиная с текста слева от курсора. Например, если я выполню эти команды:
$ ls bart
$ ls fools
затем введите ls
и нажмите Upдважды, он покажет ls bart
и курсор в том же месте. Сравните с Ctrl- r, где он найдет ls
дважды в последней строке, поэтому вам придется нажать его еще раз, чтобы найти предыдущую строку.
Оба подхода имеют свои сильные стороны, и оба могут сэкономить много времени.
решение4
Есть замена встроенному, Ctrl + Rкоторый называетсяhstr. Он позволяет искать историю команд, соответствующую всем токенам поиска одновременно (помимо прочего), и циклически перемещаться по результатам с помощью клавиш со стрелками:
Вот этодемо-скринкаст.
Его можно установить на ОС семейства Debian, например:
add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hstr
hstr --show-configuration >> ~/.bashrc
И затем использовать Ctrl + R(после повторного открытия терминала).