В 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
Мне это не нравится, потому что история легко может превратиться в беспорядок, и для этого также требуется управление мышкой.
решение1
Вставьте в свой ~/.inputrc
:
"\e[A": history-search-backward
"\e[B": history-search-forward
Затем после ввода sudo
будет Upвыполнен поиск команд, начинающихся с sudo
.
(Вам придется перезапустить bash.) (Не уверен, работает ли это в csh.)
решение2
В 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
решение3
В дополнение к Ctrl+ R, вы можете ввести !sudo
+ Enterв bash, и он выполнитпоследнийкоманда, начинающаяся с sudo
.
решение4
Введите первую букву, например sudo
, нажмите Ctrl, а затем ↑или ↓.