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

13

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

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

Mtl Dev
источник

Ответы:

20

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

user2249251
источник
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 и введите начальную букву вашей последней команды. В нем будут перечислены команды, которые вы выполняли ранее на основе вашего ввода. Как только он показывает желаемую команду, просто нажмите стрелку вправо, чтобы выбрать эту команду.

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

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

$ history | grep WHAT_YOU_LOOK_FOR

Или:

$ grep WHAT_YOU_LOOK_FOR ~/.bash_history
178024
источник