Поиск команд в истории с прерывистыми ключевыми словами

13

Мне было интересно, как искать команды в истории, не зная первые несколько букв команды?

При поиске с использованием Ctrl- Rв bash, нужно дать первые несколько букв команды. Что если я знаю только некоторые символы посередине, или некоторые в начале и некоторые в середине?

Например, для поиска cat myfileя знаю только, что есть atв нем, или где-то cв начале и myв середине. ключевые слова должны быть постоянно расположены. Например, в cat myfile, я хотел бы искать оба cи my, но Ctrl+Rне позволит указать оба одновременно.

Тим
источник
2
Я использую Ctrl-R все время, и он автоматически ищет средний текст. Ничего особенного, но в вашем примере достаточно просто набрать текст my. RHEL4 и Cygwin подтвердили.
Аарон Д. Мараско
@ Тим: ты на самом деле не пробовал, верно? Потому что он ищет буквы в середине команды.
Алекс
1
@alex: я на самом деле хотел сказать ключевые слова, которые не расположены постоянно. Например, в cat myfile, я хотел бы найти оба cи my, но Ctrl + R не позволит указать оба одновременно.
Тим

Ответы:

12

Если вы просто хотите найти строку (для пробежки по памяти), вы можете просто выполнить поиск части команды, которую вы помните:

history | grep "substring"
jasonwryan
источник
2
Как получилось, что я использую * nix системы более 5 лет и historyдо сих пор не знал о команде? Благодарность!
GMA
8

Насколько я вижу, в Bash есть только простой поиск по строке.

Подумайте о переключении на zsh , в котором есть поиск по подстановочным знакам в истории history-incremental-pattern-search-backwardи history-incremental-pattern-search-forwardне привязаны к ключам по умолчанию, но вы можете связать их:

bindkey '^X^R' history-incremental-pattern-search-backward
bindkey '^X^S' history-incremental-pattern-search-forward

Затем введите Ctrl+X Ctrl+R ^c*my.

Жиль "ТАК - перестань быть злым"
источник
0

По поводу (1) также следует вернуть человека по теме, если мужчина содержит это слово. Whatis (1) возвращает только абсолютные совпадения.

Для справки: по поводу == man -k Whatis == man -f

Эти два должны быть большой помощью, вместе с подстановочными знаками * и?

baweaver
источник
1
Вопрос о поиске в истории команд в терминале ... (не обыскивая справочные страницы) ... но на совершенно отдельной заметке я нашел ваш ответ полезным, так что +1 :)
Peter.O
.... Ах, прелесть, мой плохой друг.
пренебрежение