Bash Shell - Что эквивалентно оболочке F8 DOS?

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

[email protected]:~>cd /home/jb<F8 Key Here>

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

[email protected]:~>cd /home/jboss/server/default/log

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

Ответ 1

Нажмите Ctrl - R, прежде чем вы начнете вводить текст.

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

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

Ответ 2

My 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

Ответ 3

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

например.

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

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

Ответ 4

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

Ответ 5

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

!py

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

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

echo !py:1

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

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

Ответ 6

У меня есть эти строки в моем .inputrc файле:

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

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

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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