Как мне искать в моей истории командной строки команды, которые я использовал раньше?

Кроме просмотра истории, есть ли способ отфильтровать мою историю?

Скажите, я хочу найти команду, которая началась с "ssh"?

193
задан 26 August 2012 в 19:33

11 ответов

Я немного изменяю вышесказанное, у меня хорошо работает (если вы ссылаетесь на историю bash

В моей домашней папке я создаю файл с именем

.inputrc

Внутри идет это

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Примечание: вышеприведенное, кажется, больше не работает в 14.04, так что это делает то же самое -

"\e[A":history-search-backward
"\e[B":history-search-forward

Затем, набрав большую часть предыдущей команды Желание и использование кнопок «вверх» / «страница» dn осуществляет поиск в истории, всегда начиная со страницы «вверх»

0
ответ дан 26 August 2012 в 19:33

Нажатие Ctrl+R запустит "reverse-i-search" режим, введение "ssh" искало бы Вашу историю команды, которые содержат "ssh".

14
ответ дан 26 August 2012 в 19:33

Вот еще один метод, использующий классические команды (более вероятный для работы с дистрибутивами). История команд хранится в файле .bash_history в вашем домашнем каталоге, поэтому вы можете сделать это:

grep "ssh" ~/.bash_history

Не забывайте флаг -i, если вам нужен поиск без учета регистра.

0
ответ дан 26 August 2012 в 19:33

Если вы просто хотите искать в своей истории, вы можете просто использовать history | grep ssh, заменяя ssh тем, что вы хотите искать.

0
ответ дан 26 August 2012 в 19:33

Я нашел следующую функцию где-то в Интернете и использовал ее с большим эффектом. Поместите это в ~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

Теперь перезагрузите вашу оболочку: exec bash. Теперь у вас есть новая команда, которую вы можете использовать следующим образом:

hgrep ssh

Она покажет вам список соответствующих команд из вашей истории. Чтобы выполнить команду, введите !, а затем номер команды. Вот пример:

~:$ hgrep scp
  207  tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
  421  tn scp scott-laptop __HOST__:Scott\ Severance.asc .
  422  tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
  468  tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  469  tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  470  scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207

Мне нравится этот подход лучше, чем Ctrl + R , потому что он позволяет гораздо более гибкий поиск, и я могу видеть несколько результатов сразу.

0
ответ дан 26 August 2012 в 19:33

Поместите это в свою ~/.bashrc:

псевдоним hgrep = 'history | grep --color = auto '

пример:

0
ответ дан 26 August 2012 в 19:33

Если вы используете shell в Emacs (M-x shell), вы можете использовать M-r (это эквивалентно Ctrl + R в терминале ).

0
ответ дан 26 August 2012 в 19:33

Хотел написать это как комментарий к @ssmy , но не смог заставить форматирование в комментарии сотрудничать.

После поиска по истории с помощью history | grep ssh вы можете выполнить желаемую команду, набрав ее номер с восклицательным знаком, например, !42.

Пример:

$ history | grep ssh
  5 ssh me@someserver.net
 13 ssh me@someotherserver.net
 42 ssh me@thisone.com
$ !42
0
ответ дан 26 August 2012 в 19:33

История хороша, но ограничена - я предпочитаю настраивать свою среду удара так, чтобы я зарегистрировался весь из команд, которые я когда-либо выполнял, в дополнение к каталогу, в котором они были выполнены в. Затем я выполняю команду для списка всех команд, которые я выполнил в текущем каталоге, который я могу передать по каналу к grep и т.д. - это называют, 'тарелка' см.:

https://github.com/wolfwoolford/dish

, Если Вы хотите сократить к преследованию, просто получает это в Вашем .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc)

существует также действительно полезная команда, Вас бесплатно называют 'dishg' - или глобальная тарелка - который распечатывает каждую команду, когда-либо выполненную, независимо от каталога. Очевидно, этот только полезен при использовании с grep и хвостом и т.д.

я использовал его в течение многих лет, и это - буквально первая вещь, которую я устанавливаю каждый раз, когда я устанавливаю новое поле. Это регистрирует команды, Вы сталкиваетесь с текстовыми файлами в скрытом каталоге (~/.dish).. У меня никогда не было проблемы с дисковым пространством...

0
ответ дан 26 August 2012 в 19:33

Нажмите Ctrl + R и введите ssh. Ctrl + R начнет поиск с самой последней команды на старую (обратный поиск). Если у вас есть несколько команд, начинающихся с ssh, снова и снова нажимайте Ctrl + R , пока не найдете совпадение.

После того, как вы нашли совпадение, вы можете нажать Enter , чтобы выполнить команду, или курсор влево / вправо, чтобы просто выбрать текст команды.

Для Ctrl + R нет опции обратного хода по умолчанию, но здесь вы найдете некоторые предложения по этому поводу.

0
ответ дан 26 August 2012 в 19:33

Мне нравится искать мою историю вместо Ctrl+R обратного поиска. Это потому, что вы можете видеть только одну строку с Ctrl+R. С помощью grep вы получаете больше общего представления о вашем последнем взаимодействии с командой и т. д.

У меня есть следующее в моем .bashrc . Это позволяет вам искать историю команд, набрав hiss KEYWORD . Назовите это как хотите. Я люблю шипеть ^^ . Не забудьте перезагрузить файл .bashrc с source ~/.bashrc

hiss () { history | grep "$@"; }
1
ответ дан 8 August 2020 в 16:37

Другие вопросы по тегам:

Похожие вопросы: