Могу я история поиска в ударе и выполнять результат?
Введите Ctrl R в командной строке и начните вводить предыдущую команду. После того как результат появляется, продолжают поражать Ctrl R для наблюдения других соответствий. Когда команда, которую Вы хотите, появляется, просто нажмите Enter
Обратите внимание что, в то время как Ctrl R является значением по умолчанию, если Вы хотели команду (reverse-search-history
) быть связанным с Ctrl T Вы могло настроить это со следующим:
bind '"\C-t": reverse-search-history'
Существует большое количество других readline связываемых команд, которые доступны Вам также. Смотрите на bash
страница справочника.
Bash имеет много средств, чтобы искать и получить доступ к интерактивной истории команд. Самый основной из которых history
встроенный. Ввод просто:
$ history
Распечатает список команд наряду с числовым индексом, как:
$ history 1 clear 2 ls -al 3 vim ~/somefile.txt 4 history $
Можно затем выполнить любую из этих команд с помощью их числового индекса путем снабжения предисловием индекса с синглом !
, поскольку Mitch указал:
$ !1
Выполнится clear
команда. Встроенная история имеет много функций сама, Вы видите больше в bash
и history
страницы справочника.
Можно также указать относительные отрицательные смещения при использовании !
указатель, таким образом с помощью нашего списка предыстории выше, если мы хотели выполниться vim
снова, мы могли сделать:
$ !-2
Который в основном говорит удару выполнять команду, Вы работали "две команды назад". Для выполнения предыдущей команды в списке предыстории мы можем просто использовать !!
(который является просто сокращением от !-1
).
!
указатель не ограничивает Вас числовым определением, которые управляют для выполнения. hayalci показал, что можно сообщить bash
для выполнения команды на основе любого текст, это начинается (использование !
) или текст в рамках самой команды (использование !?
). Снова, с помощью нашего списка предыстории в качестве примера выше, если мы хотели выполниться clear
снова, все, что мы должны сделать, ввести:
$ !cl
и нажмите Enter. И что относительно vim
? Это столь же просто как:
$ !?some
Наиболее важный момент от ответа hayalci является вызовом к shopt
встроенный:
$ shopt -s histverify
Это включит проверку истории так, чтобы команды, которые подобраны !
, !!
, и !?
указатели вслепую не выполнены, но вместо этого заполнены на командной строке, таким образом, можно удостовериться, что они не сделают никакого зла прежде, чем выполнить их. Это еще более важно при выполнении команд как пользователь root. Эта опция может быть установлена в Вашем .bashrc
файл запуска так, чтобы это было установлено каждый раз, когда Вы входите в систему.
Как был уже указан, вся эта информация может быть подобрана из bash
страница справочника. Для!!!, и!? указатели, смотрите на Раздел 9.3 Расширений Истории.
Как альтернатива crtl+R, Вы можете история поиска путем ввода
!text
Это будет искать историю новую команду, начинающуюся с 'текста'.
Но я предполагаю, что Вы помещаете это в свой .bashrc для предотвращения выполнения неправильной команды.
shopt -s histverify
Это сообщает удару, таким образом что после любых действий истории (как !!:s/prev_text/after_text
), это помещает получающуюся строку в командную строку. Затем можно рассмотреть или отредактировать команду и нажать Enter впоследствии.
Превосходная рецензия, Sean! Я поместил это в комментарий, но я - несколько застенчивых точек репутации.:-)
Другая связанная и полезная техника является способностью выполнить предыдущую команду при изменении слова. Скажите Вас typoed имя каталога или хотите изменить имя файла:
$ echo my name is bob my name is bob $ ^bob^jordan echo my name is jordan my name is jordan
Заметьте, что команда расширена, заменена и произведена, прежде чем команда выполняется, поэтому если неправильная команда выполняется, Вы видите, какой удар думал, что это делало.
Я предпочитаю использовать history-search-backward по обратной истории поиска. Первый позволяет, Вы ввести несколько символов команды затем нажимаете клавишу поиска, в противоположность нажатию клавиши поиска сначала затем ввод строки поиска.
По умолчанию в моей системе, M-p и M-n связывают с подобными функциями, но я предпочитаю связывать клавиши со стрелками:
bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'