Я искал, но не нашел что-либо на этом. Я ищу функциональность в ударе, с помощью терминала.
Путь назад, когда, у меня был пользователь в debian системе, и друг настроил меня с удобной функцией поиска истории (я полагаю, что использовал tcsh затем), где я введу начало предыдущей команды, поразить стрелку вниз, и это сделало бы поиск, на основе частичной строки.
Например, если моя история:
./script.pl
./script.pl arg1
cat output
cat output | grep yada
И я ввожу .
, и нажмите стрелку вниз, она показала бы мне: ./script.pl arg1
. Нажмите его снова, и это показало бы ./script.pl
, и т.д.
Очень как он выполнил бы a grep
на .bash_history. Существует ли способ получить эту функциональность?
Откройте свой ~/.inputrc
. Если у вас нет этого файла, посмотрите в конце, как его создать. Добавьте эти строки:
## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward
Строки, начинающиеся с #
- это комментарии. Я не могу вспомнить, что назад, а что вперед. Экспериментируйте с этим. Может быть, вам нужно переключиться назад и вперед.
Просто снова откройте, возможно, открытые терминальные окна, чтобы новое поведение вступило в силу.
Немного фоновой информации:
Бэш использует readline для работы с подсказкой. ~/.inputrc
- это файл конфигурации для строки чтения. Обратите внимание, что это также вступит в силу в других программах, использующих библиотеку readline, например IPython.
Прочитайте руководство по использованию bash manual для получения дополнительной информации о readline. Там же Вы можете найти больше команд readline, связанных с историей .
Для получения экранирующих кодов клавиш со стрелками Вы можете сделать следующее:
cat
в терминале (только cat
, больше никаких аргументов). ^[[A
для стрелки вверх и ^[[B
для стрелки вниз.^[
на \e
. Если у вас еще нет файла ~/.inputrc
, скопируйте настройки по умолчанию или все остальные привязки клавиш по умолчанию будут переопределены:
cp /etc/inputrc ~/.inputrc
или начните свой ~/. файл inputrc
со следующей строкой
$include /etc/inputrc
Существует альтернатива, аналогичная описанной выше в @lesmana, но вам не нужно создавать новый файл .inputrc.
Вместо этого, если у вас есть разрешения sudo, вы можете включить это в файле / etc / inputrc. В этом файле находятся различные настройки клавиатуры, включая функцию поиска по истории (по крайней мере, для 18.04). Отрывок из / etc / inputrc:
# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward
Раскомментируйте две нижние строки с помощью редактора файлов sudo (например, $ sudo vim), и новый сеанс терминала будет иметь функцию поиска по истории (для всех пользователей). Таким образом, вам не нужно беспокоиться о создании файла ~ / .inputrc, и вам не нужно будет добавлять оператор $ include
, как @Tulio Casagrande, упомянутый в комментариях, чтобы сохранить введенные вами ctrl-стрелки.
Ctrl + R предоставит вам такую функциональность. Начните вводить частичную команду и она придумает старую, по которой можно перемещаться со стрелками вверх и вниз.
Дополнительная информация здесь.
Создайте файл с именем setup_readline.sh с режимом 644 в / etc / profile. d / со следующим содержанием, войдите в систему и проверьте свои предпочтительные ключи:
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
Я думаю, что это лучший способ сделать это. В основном, если вы используете системы управления конфигурацией, такие как шеф-повар, марионетка и т. Д.
И конфигурация системы все еще нетронута!
для завершения ответа лесмана относительно ~/.inputrc
, который я должен создать под моим Доверенным 14. 04, verify/add в ~/.bashrc
(первая строка уже существует в моей ~/.bashrc
):
shopt -s histappend
PROMPT_COMMAND='history -a'
Это уже объяснено по-французски здесь.
Возможно, вы захотите попробовать https://github. com/dvorka/hstr, которая обеспечивает простую и многострочную простую фильтрацию истории Бэша, которая, основываясь на метрике (когда, как часто и длина команд имеет значение) - вы можете использовать клавиши со стрелками, чтобы легко перемещаться по истории:
Она может быть легко связана с Ctrl-r и/или Ctrl-s
Следующее решение объединяет и расширяет некоторые из вышеупомянутых подходов:
добавьте следующие строки в ваш файл ~ / .bash_aliases
(нет необходимости в ~ / .inputrc
), чтобы добиться следующего поведения:
bind '"\e[1;5A":history-search-backward'
bind '"\e[1;5B":history-search-forward'
bind '"\e[1;5C":forward-word'
bind '"\e[1;5D":backward-word'
Повторный вход в оболочку (или запустите source ./bash_aliases
), чтобы применить изменения.