Поиск истории поиска, частичный + стрелка вверх

114

Я искал, но ничего не нашел по этому поводу. Я ищу функциональность в bash, используя терминал.

Возвращение назад, когда у меня был пользователь в дебианской системе, и друг установил меня с удобной функцией поиска истории (я считаю, что я использовал tcsh then), где я бы набрал начало предыдущей команды, -arrow, и он выполнит поиск на основе частичной строки.

например. если моя история:

./script.pl
./script.pl arg1
cat output
cat output | grep yada

И я набираю . и нажимаю стрелку вверх, это покажет мне: ./script.pl arg1 . Нажмите его еще раз, и он отобразит ./script.pl и т. Д.

Очень похоже, что он выполнит grep на .bash_history. Есть ли способ получить эту функциональность?

    
задан TLP 03.09.2011 в 14:11
источник

4 ответа

163

Поместите следующие строки в свой файл ~/.inputrc :

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

Строки, начинающиеся с # , являются комментариями. Я не могу вспомнить, что отстало и что вперед. Поэкспериментируйте с ним. Возможно, вам нужно переключиться назад и вперед.

Немного справочная информация:

Bash использует readline для обработки запроса. ~/.inputrc - это файл конфигурации для readline. Обратите внимание, что это также вступит в силу в другом программном обеспечении, используя библиотеку readline, например IPython .

Подробнее о readline читайте в руководстве bash . Там вы также можете найти более команды чтения по истории .

Чтобы получить коды эвакуации для клавиш со стрелками, вы можете сделать следующее:

  1. Начать cat в терминале (только cat , никаких дополнительных аргументов).
  2. Введите ключи на клавиатуре, вы получите такие вещи, как ^[[A для стрелок вверх и ^[[B для стрелки вниз.
  3. Замените ^[ на \e .
ответ дан lesmana 03.09.2011 в 15:31
источник
17

Создайте файл с именем setup_readline.sh с режимом 644 в файле /etc/profile.d/ со следующим содержимым, войдите в систему и проверьте предпочтительные ключи:

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

Думаю, это лучший способ сделать это. В основном, если вы используете системы управления конфигурацией, такие как шеф-повар, марионетка и т. Д.

И системная конфигурация еще не тронута!

    
ответ дан user287613 02.06.2014 в 09:58
12

Ctrl + R предоставит вам такую ​​функциональность. Начните вводить частичную команду, и она придумает старые, которые вы можете перемещать с помощью стрелок вверх и вниз. Дополнительная информация: Ссылка

    
ответ дан Andrew Moss 03.09.2011 в 14:17
3

Чтобы закончить ответ lesmana относительно «~ / .inputrc», который я должен создать под моим Trusty 12.04, проверьте / добавьте в «~ / .bashrc» (первая строка уже существует в моей «~ / .bashrc»):

shopt -s histappend  
PROMPT_COMMAND='history -a'  

Это уже объяснено на французском языке в ссылке .

    
ответ дан bcag2 14.10.2015 в 10:31