Відповіді:
Натисніть Ctrl+ Rі введіть ssh
. Ctrl+ Rпочне пошук від останньої команди до старої (зворотний пошук). Якщо у вас є кілька команд, які починаються з ssh
, натискайте Ctrl+ Rще і знову, поки не знайдете відповідність.
Після того, як ви знайшли відповідність, ви можете натиснути Enterдля виконання команди або курсор вліво / вправо, щоб просто вибрати текст команди.
Не існує типового зворотного варіанту для Ctrl+, Rщоб перевернути напрямок пошуку, але тут ви знайдете кілька пропозицій щодо цього.
Я незначно змінюю вищезазначене, добре працює для мене (якщо ви маєте на увазі свою історію баш
У своїй домашній папці я створюю файл з назвою
.inputrc
Всередині йде це
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Примітка: вище, здається, не працює вже в 14.04, тому це робить те саме -
"\e[A":history-search-backward
"\e[B":history-search-forward
Тоді набираючи велику частину попередньої команди, я бажаю, і за допомогою кнопок сторінки вгору / сторінки dn шукає історію, завжди починаючи зі сторінки вгору
Ось ще один метод, що використовує класичні команди (швидше за все, для роботи в дистрибутивах). Історія команд зберігається у файлі .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+, Rтому що він дозволяє набагато гнучкіше шукати, і я можу побачити декілька результатів одночасно.
Якщо ви використовуєте оболонку в Emacs ( M-x shell
), ви можете використовувати M-r
(це еквівалентно Ctrl+ Rв терміналі ).
Історія хороша, але обмежена - я вважаю за краще налаштувати моє середовище bash, щоб я записував усі команди, які я коли-небудь виконував, на додаток до каталогу, в якому вони були запущені. Потім я запускаю команду, щоб перелічити всі команди Я запустив у поточному каталозі, який я можу подати на клацання тощо. Це називається "блюдо", див.
https://github.com/wolfwoolford/dish
Якщо ви хочете вирізати погоню, просто вкажіть це у своєму .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
Існує також дійсно корисна команда, яку ви отримуєте безкоштовно під назвою "dishg" - або блюдо глобальна -, яка виводить кожну команду, яку коли-небудь виконують, незалежно від каталогу. Очевидно, цей варіант корисний лише при використанні із грепом та хвостом тощо.
Я використовую його роками, і це буквально перше, що я встановлюю, коли встановлюю нову коробку. Він записує команди, які ви запускаєте до текстових файлів у прихованому каталозі (~ / .dish). У мене ніколи не було проблеми з дисковим простором ...
Хотіла написати це як коментар до @ssmy, але не змогла отримати форматування в коментарі до співпраці.
Після пошуку за допомогою історії history | grep ssh
ви можете виконати бажану команду, набравши її номер, попередньо вигукнутий знак, наприклад !42
.
Приклад:
$ історія | grep ssh 5 ssh me@someserver.net 13 ssh me@someotherserver.net 42 ssh me@thisone.com $ 42