Есть ли лучший способ поиска команды в моем файле истории, чем grep? У меня есть некоторое представление о том, с чего начинается команда, но я не знаю, как далеко она зашла в историю.
update: раньше был специфичен для zsh, но из-за перекрывающихся ответов не стесняйтесь отвечать здесь за любую оболочку (или режим (vi / emacs)), просто отметьте, если она специфична.
shell
command-history
xenoterracide
источник
источник
<kbd>Ctrl+R</kbd>
. источник ответаПри использовании Bash введите Control-, Rа затем начните вводить. Набор текста Control- Rнесколько раз после ввода текста вернет вас обратно в соответствующие командные строки.
источник
Не уверен, что это поможет, но мне нравится использовать ctrl- rи затем начать вводить команду. Он должен пройти через вашу историю и представить вам первый матч. Для переключения между матчами просто нажмите ctrl- еще rраз.
источник
Если вы добавите следующее к
~/.inputrc
и перезапустите Bash, вы можете начать печатать, а затем использовать Page Upи Page Downдля перемещения назад и вперед по истории строк, начинающихся с того же префикса, который вы только что набрали.
(Некоторые могут предпочесть использовать
\e[A
и\e[B
, который заменит обычные Upи Downдействия вместо привязки новых ключей.)источник
Alt + Up
иAlt + Down
. В зависимости от эмуляции клавиатуры, которую использует эмуляция терминала, эти комбинации могут быть сопоставлены либо с\E[A
и\E[A
(например, KDE Konsole с привязками клавиш Linux), либо\E[1;3A
и\E[1;3B
(например, XFCE Terminal или KDE Konsole с привязками X Free 4).Интерактивная подсказка, вызываемая Ctrl- R, как уже упоминалось, является наиболее удобным способом. Кроме того , он популярен переназначить Upи Downклавиши со стрелками для поиска истории для префикса в настоящее время в командной строке, однако это требует некоторых изменений в
~/.inputrc
файл .Классическое и менее интерактивное решение - использовать расширение истории оболочки. Typing
выполнит последнюю команду, которая начинается с
foo
ивыполнит последнюю команду, которая содержит
foo
. Более подробную информацию о расширении истории можно найти в справочном руководстве по Bash , если ваша оболочка Bash или совместима.источник
Если вы добавите
stty -ixon
в свой~/.bashrc
файл, то Ctrl- sбудет идти в направлении, противоположном Ctrl- r.источник
C-s
для этой цели, но мой терминал завис ; берегитесь! (Ну, я еще не нанял никогоstty ixon
, не уверен, для чего этоC-q
будет "разморозить". Это иC-s
есть обычные программные символы управления потоком, которые когда-то были полезны для ручного прерывания (приостановки) потока вывода при использовании медленных последовательных соединений. Теперь вывод в большинстве случаев настолько быстр, что то, что вы хотите видеть при нажатииC-s
, уже прокручивается.stty -ixon
отключает программное управление потоком.Если вы напечатаете,
!ls
bash просмотрит вашу историю и выполнит самую последнюю команду, которая начинается с «ls»источник
может быть специфичным для Zsh. Исследуя этот ответ, я нашел,
vi-history-search-backward
что позволяет искать /в режиме vi (в котором я не упомянул, что я был), вы можете затем использовать nи Nдля поиска вперед и назад соответственно (после нажатия enter).источник
Я удивлен, что это не было упомянуто - но вы можете выбрать vi-mode в bash или ksh, выполнив это:
... или используя это как содержимое
~/.inputrc
(для GNU readline, используемого в таких программах, как bash):Затем, после этого, вы можете использовать, Escчтобы войти в командный режим и использовать, kчтобы вернуться в историю и jперейти вперед. Вы также можете выполнять поиск с помощью /обычного поиска и ?обратного поиска.
Если вы используете
~/.inputrc
, то это будет работать не только в GNU bash, но и во всем, что использует GNU readline, например CLISP, и, возможно, в таких программах, как командная оболочка MySQL и оболочка CPAN.источник
Для переключения вперед при использовании обратного поиска (с помощью команды Ctrl-R):
Откройте файл .bashrc:
sudo gedit ~/.bashrc
добавить эту строку (буква "f" может быть заменена другой, еще не используемой системой)
source ~/.bashrc
или. ~/.bashrc
ТЕПЕРЬ ВЫ МОЖЕТЕ ДВИЖИТЬСЯ В ИСТОРИЮ С ИСТОЧНИКОМ: Ctrl + F
Работа над Ubuntu 18.04 LTS
источник
Я использую следующие два большую часть времени.
Но, пожалуйста, обратите внимание, что они оба ищут начальные символы.
fc -e - <SPACE>
<first few char for your previous >
этого запускает последнюю команду, соответствующую этой последовательности.Я не смог найти что-то вроде Ctrl+ Rв Bash для моих ksh и tcsh.
источник
set -o emacs
режиме, кстати.Есть способ использовать Ctrl- Rс tcsh . Добавьте следующее в ваш
~/.cshrc
:bindkey "^r" i-search-back
(это просто знак каретки и буква г)Это самая большая экономия времени для меня.
источник
аналогичный ответ на @ephemient, но вы можете поместить в свой .bashrc
и введите часть фразы, а затем используйте стрелки вверх / вниз, чтобы просмотреть самые последние варианты, которые соответствуют. Это поведение по умолчанию в Matlab.
Для большинства людей, если вы хотите перенести свои настройки на новую систему, легче не забыть зацепить только
~/.bashrc
то, что вам нужно зацепить, что~/.inputrc
источник
Да, он существует, по крайней мере, если вы используете Zsh. Просто начните вводить команду, а затем нажмите M-p( ESC p), и она найдет предыдущие команды, которые соответствуют введенному вами. Нажмите еще раз, чтобы найти следующий матч.
источник