Bash Shell - Что эквивалентно оболочке DOS F8? - PullRequest
10 голосов
/ 08 января 2009

При работе с интерактивным bash-сеансом я пропускаю один аспект оболочки Windows - клавиша F8 , с которой вы начинаете вводить команду, нажимаете F8 , и оболочка находит самые последние Введенная в историю команда соответствует тому, что вы уже ввели. например,

me@Ubntu07:~>cd /home/jb<F8 Key Here>

вызывает мою предыдущую команду:

me@Ubntu07:~>cd /home/jboss/server/default/log

Есть ли способ сделать это в bash?

Ответы [ 9 ]

15 голосов
/ 08 января 2009

Нажмите Ctrl - R , прежде чем начать печатать.

(вполне может быть другая версия, которая находит команды на основе того, что уже было набрано - я не знаю, поскольку Ctrl - R всегда был достаточно хорош для меня: )

Нажатие Ctrl - R снова показывает следующий матч и т. Д.

6 голосов
/ 08 января 2009

Мой Gentoo настроен таким образом, что я могу нажимать PgUp и PgDn для прокрутки тех команд в истории команд, которые начинаются с того, что в настоящее время находится в моей командной строке.

# cd<PgUp>

Результат:

# cd hydrogen

Это почти та же функция. Это определено в моем /etc/inputrc со следующими строками:

# mappings for "page up" and "page down" to step to the beginning/end 
# of the history
"\e[5~": history-search-backward
"\e[6~": history-search-forward
2 голосов
/ 08 января 2009

Ctrl + R выполняет поиск в истории. Это немного отличается тем, что сначала вы нажимаете Ctrl + R и , затем введите то, что вы ищете.

2 голосов
/ 08 января 2009

В вашем случае !jb напечатает и затем запустит эту команду.

например.,

$ nano logconfig.properties
$ !n
nano logconfig.properties
$

Конечно, если вы хотите быть в безопасности, сначала используйте ctrl-r, чтобы вызвать историю интерактивных команд.

1 голос
/ 08 января 2009

В моем файле .inputrc есть следующие строки:

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

Привязывает поиск по истории к клавишам со стрелками вверх и вниз. Таким образом, вы можете начать вводить команду, скажем kextload, и затем каждое нажатие стрелки вверх завершит строку предыдущей командой, которая началась с kextload.

Все мои конфигурационные файлы общедоступны на github.

http://github.com/jonshea/config-files/tree/master

1 голос
/ 08 января 2009

Если вы просто говорите о команде, вы можете использовать !<cmd> для выполнения последней. Например, скажем, вы ввели python runscript.py некоторое время назад; Вы можете ввести:

!py

или что-то в этом духе, чтобы снова запустить эту команду.

Чтобы повторить аргумент команды, вы можете сделать что-то вроде этого:

echo !py:1

, который в этом примере вернул бы runscript.py назад к терминалу. Число после двоеточия относится к аргументу, который вы хотите использовать в данной команде.

Есть много другой замечательной информации об истории bash здесь .

0 голосов
/ 08 января 2009

Если вы используете режим ввода vi (установите -o vi в bash или задайте режим редактирования vi в .inputrc), вы можете использовать обычные команды vi для поиска в истории (/). Это также дает вам полные регулярные выражения, которые могут быть полезны для поиска сложной команды.

0 голосов
/ 08 января 2009

Хорошие решения. Спасибо за это. Ctrl + R был именно тем, что я искал, хотя опции inputrc - действительно полезные дополнения.

Приветствие.

0 голосов
/ 08 января 2009

ИМХО! это опасно, как делать! rm в неправильной оболочке, которая имеет команду rm, отличную от той, которую вы ожидали. По крайней мере, Ctrl + R позволяет вам увидеть полную командную строку, которую вы выбрали перед ее выполнением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...