Как вызвать конкретную команду из истории команд, не выполняя ее?


13

Например, в bash я могу ввести !xyzкоманду, которая будет запускать последнюю введенную мной команду xyz.

Как вызвать последнюю введенную команду, начиная с xyzнее, но не выполняя ее?
например, чтобы я мог изменить параметры перед выполнением ....

Ответы:


20

Вы можете сделать это следующим образом: В командной строке нажмите Ctrl+, rа затем введите команду, которую вы хотите вызвать, в вашем случае xyz. Это покажет вам полную команду без ее выполнения.


1
Более полезно, чем !нотация, потому что вы можете нажать Ctrl-r несколько раз, чтобы перейти к истории соответствия. Когда вы прибудете в нужное место, вы можете попытаться выполнить не с Enter, а с Ctrl-o для большой прибыли.
Кубанчик

12

Попробуй !xyz:p; она вызовет команду на вершину истории, не выполнив ее, поэтому, например, стрелка вверх может немедленно получить к ней доступ для интерактивного редактирования.

Кроме того, я практикую это при вызове команд с регулярным выражением, которые могли предположительно выкопать что-то разрушительное, с тех пор как поспешный !r, намеревался вызвать самую последнюю rsync ...команду, откатился назад и выполнил команду, rm *которая была помещена в стек совсем недавно чем rsync.


Спасибо, это хорошая практика. Я сделал то же самое с rm -rf ./*никогда не был так благодарен в течение определенного периода. К сведению, !xyz:pсработало, спасибо, но потребовалось несколько дополнительных нажатий клавиш, чем решение ctrl-r.
Mtl Dev

@MtlDev да; Я считаю, что решение ^ R лучше EMACSвсего viподходит для глаз , в то время как! -Path лучше всего подходит для таких олаторов, как я.
MadHatter

1
  1. Выполните следующую команду. Это будет повторять последнюю выполненную команду. Вы можете скопировать и отредактировать команду. Эта команда протестирована в Debian.

    история | хвост -2 | grep -v история | cut -d '' -f4-

  2. Или Нажмите и удерживайте Ctrl + R и введите начальную букву вашей последней команды. В нем будут перечислены команды, которые вы выполняли ранее на основе вашего ввода. Как только он показывает желаемую команду, просто нажмите стрелку вправо, чтобы выбрать эту команду.


1
Первая команда такая плавная !! Я думаю, что быстрее просто следить за командой в истории, чем писать все это ^ __ ^
Grajdeanu Alex.

1

Если поиск по обратной истории не удался, сделайте что-нибудь из:

$ history | grep WHAT_YOU_LOOK_FOR

Или:

$ grep WHAT_YOU_LOOK_FOR ~/.bash_history
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.