2

В Dos мы можем ввести первые несколько символов, чтобы отфильтровать историю команд и быстро найти правильный. Но как сделать то же самое в Linux?

например, когда я тестирую локальный сервер:

cd 
sudo /etc/init.d/vsftpd start
wget ...
ls
emacs ...
sudo /etc/init.d/vsftpd restart
sudo /etc/init.d/vsftpd stop
...

В Dos вы можете легко набрать sudo и переключаться между тремя командами, начиная с него, с помощью клавиш со стрелками. Но в Linux, команда ниже, лучшее, что мы можем сделать?

historty | grep sudo

Мне это не нравится, потому что история может легко стать беспорядком, и это также требует действия мыши.

4 ответа4

6

В Bash (и в большинстве подобных приложений на основе readline) вы можете нажать Ctrl-R чтобы вызвать функцию поиска в истории:

$ date
Tue Feb  1 15:40:06 EET 2011
(reverse-i-search)`d': date

При нажатии Enter здесь я получаю:

$ date
Tue Feb  1 15:40:06 EET 2011
$ date
Tue Feb  1 15:40:52 EET 2011

РЕДАКТИРОВАТЬ:

Вы можете увидеть полный список исторических нажатий клавиш Bash здесь.

Вы можете увидеть текущий список привязок клавиатуры поиска по истории:

$ bind -P | grep search | grep history
forward-search-history can be found on "\C-s".
history-search-backward can be found on "\e[5~".
history-search-forward can be found on "\e[6~".
non-incremental-forward-search-history can be found on "\en".
non-incremental-forward-search-history-again is not bound to any keys
non-incremental-reverse-search-history can be found on "\ep".
non-incremental-reverse-search-history-again is not bound to any keys
reverse-search-history can be found on "\C-r".

В моем случае Page-Up/Down также можно использовать для поиска команд, которые начинаются с того, что я уже набрал, как настроено в моем /etc/inputrc:

# Page Up/Down cycles through history only for matching entries
"\e[5~": history-search-backward       # Previous
"\e[6~": history-search-forward        # Next
6

Поместите следующее в ваш ~/.inputrc:

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

Затем после ввода sudo Up будет искать команды, начинающиеся с sudo .

(Вам придется перезапустить Bash.) (Не уверен, что это работает в csh.)

3

В дополнение к Ctrl + R, вы можете ввести !sudo + введите в bash, и он выполнит последнюю команду, начиная с sudo .

2

Введите первую букву, например, sudo , нажмите Ctrl, а затем или .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .