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 для поиска истории (/). Это также дает вам полные регулярные выражения, которые могут быть полезны для поиска сложной команды.