Кроме просмотра истории, есть ли способ отфильтровать мою историю?
Скажите, я хочу найти команду, которая началась с "ssh"?
Я немного изменяю вышесказанное, у меня хорошо работает (если вы ссылаетесь на историю 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 осуществляет поиск в истории, всегда начиная со страницы «вверх»
Нажатие Ctrl+R запустит "reverse-i-search" режим, введение "ssh" искало бы Вашу историю команды, которые содержат "ssh".
Вот еще один метод, использующий классические команды (более вероятный для работы с дистрибутивами). История команд хранится в файле .bash_history
в вашем домашнем каталоге, поэтому вы можете сделать это:
grep "ssh" ~/.bash_history
Не забывайте флаг -i
, если вам нужен поиск без учета регистра.
Если вы просто хотите искать в своей истории, вы можете просто использовать history | grep ssh
, заменяя ssh тем, что вы хотите искать.
Я нашел следующую функцию где-то в Интернете и использовал ее с большим эффектом. Поместите это в ~/.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 kbd> + R kbd>, потому что он позволяет гораздо более гибкий поиск, и я могу видеть несколько результатов сразу.
Поместите это в свою ~/.bashrc
:
псевдоним hgrep = 'history | grep --color = auto '
blockquote>
Если вы используете shell в Emacs (M-x shell
), вы можете использовать M-r
(это эквивалентно Ctrl kbd> + R kbd > в терминале ).
Хотел написать это как комментарий к @ssmy , но не смог заставить форматирование в комментарии сотрудничать.
После поиска по истории с помощью history | grep ssh
вы можете выполнить желаемую команду, набрав ее номер с восклицательным знаком, например, !42
.
Пример:
$ history | grep ssh 5 ssh me@someserver.net 13 ssh me@someotherserver.net 42 ssh me@thisone.com $ !42
История хороша, но ограничена - я предпочитаю настраивать свою среду удара так, чтобы я зарегистрировался весь из команд, которые я когда-либо выполнял, в дополнение к каталогу, в котором они были выполнены в. Затем я выполняю команду для списка всех команд, которые я выполнил в текущем каталоге, который я могу передать по каналу к grep и т.д. - это называют, 'тарелка' см.:
https://github.com/wolfwoolford/dish
, Если Вы хотите сократить к преследованию, просто получает это в Вашем .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc)
существует также действительно полезная команда, Вас бесплатно называют 'dishg' - или глобальная тарелка - который распечатывает каждую команду, когда-либо выполненную, независимо от каталога. Очевидно, этот только полезен при использовании с grep и хвостом и т.д.
я использовал его в течение многих лет, и это - буквально первая вещь, которую я устанавливаю каждый раз, когда я устанавливаю новое поле. Это регистрирует команды, Вы сталкиваетесь с текстовыми файлами в скрытом каталоге (~/.dish).. У меня никогда не было проблемы с дисковым пространством...
Нажмите Ctrl kbd> + R kbd> и введите ssh
. Ctrl kbd> + R kbd> начнет поиск с самой последней команды на старую (обратный поиск). Если у вас есть несколько команд, начинающихся с ssh
, снова и снова нажимайте Ctrl kbd> + R kbd>, пока не найдете совпадение.
После того, как вы нашли совпадение, вы можете нажать Enter kbd>, чтобы выполнить команду, или курсор влево / вправо, чтобы просто выбрать текст команды.
Для Ctrl kbd> + R kbd> нет опции обратного хода по умолчанию, но здесь вы найдете некоторые предложения по этому поводу.
Мне нравится искать мою историю вместо Ctrl+R обратного поиска. Это потому, что вы можете видеть только одну строку с Ctrl+R. С помощью grep вы получаете больше общего представления о вашем последнем взаимодействии с командой и т. д.
У меня есть следующее в моем .bashrc
. Это позволяет вам искать историю команд, набрав hiss KEYWORD
. Назовите это как хотите. Я люблю шипеть ^^ . Не забудьте перезагрузить файл .bashrc
с source ~/.bashrc
hiss () { history | grep "$@"; }