Я искал, но ничего не нашел по этому вопросу. Я ищу функциональность в Bash, используя терминал.
Еще тогда, когда у меня был пользователь в системе Debian, и мой друг настроил меня с удобной функцией поиска по истории (я думаю, что я использовал tcsh тогда), где я набрал бы начало предыдущей команды, нажал стрелку вверх, и это сделало бы поиск, основанный на частичной строке.
Например, если моя история:
./script.pl
./script.pl arg1
cat output
cat output | grep yada
И я печатаю .
, и нажмите стрелка вверх, она покажет мне: ./script.pl arg1
. Нажмите еще раз, и он покажет ./script.pl
, и т. Д.
Очень похоже, что он будет выполнять grep
на .bash_history. Есть ли способ получить эту функциональность?
Ответы:
Поместите следующие строки в свой
~/.inputrc
:Строки, начинающиеся с
#
комментариев. Я не могу вспомнить, что назад, а что вперед. Экспериментируйте с этим. Возможно, вам придется переключаться назад и вперед.Немного справочной информации:
Bash использует readline для обработки запроса.
~/.inputrc
это файл конфигурации для readline. Обратите внимание, что это также вступит в силу в других программах, использующих библиотеку readline, например, IPython .Прочтите руководство по bash для получения дополнительной информации о readline. Там вы также можете найти больше связанных с историей команд readline .
Чтобы получить коды выхода для клавиш со стрелками, вы можете сделать следующее:
cat
в терминале (простоcat
без дальнейших аргументов).^[[A
стрелка вверх и стрелка^[[B
вниз.^[
на\e
.источник
$include /etc/inputrc
, желательно в первую строку.Создайте файл с именем setup_readline.sh с режимом 644 в /etc/profile.d/ со следующим содержимым, войдите в систему и проверьте предпочитаемые ключи:
Я думаю, что это лучший способ сделать это. В основном, если вы используете системы управления конфигурациями, такие как chef, puppet и т. Д.
И конфиг системы еще не тронут!
источник
screen
. Странно то, что работают другие ярлыки .inputrc, но не эти. Поэтому сейчас я использую оба решения.Ctrl + R даст вам такую функциональность. Начните вводить частичную команду, и она найдет старые, которые вы можете перемещать с помощью стрелок вверх и вниз. Дополнительная информация: http://www.nuxified.org/blog/ctrl_r_in_the_bash_shell
источник
Ctrl+r
Чтобы завершить ответ Lesmana относительно "~ / .inputrc", который я должен создать в моем Trusty 14.04, проверьте / добавьте в "~ / .bashrc" (первая строка уже существует в моем "~ / .bashrc"):
Это уже объяснено на французском языке в https://doc.ubuntu-fr.org/terminal?&#pour_completer_les_commandes_a_partir_de_l_historique .
источник
Возможно, вы захотите попробовать https://github.com/dvorka/hstr, который обеспечивает простую и многострочную простую фильтрацию истории Bash, которая на основе метрик (когда, как часто и длина команд имеет значение) - вы можете использовать клавиши со стрелками для удобной навигации по истории:
Он может быть легко связаны с Ctrl-rи / илиCtrl-s
источник
Следующее решение объединяет и расширяет некоторые из вышеупомянутых подходов: добавьте следующие строки в ваш
~/.bash_aliases
файл (без необходимости~/.inputrc
) для достижения следующего поведения:Повторно войдите в оболочку (или запустите
source ./bash_aliases
), чтобы применить изменения.источник