Перезапустить несколько команд истории

22

Представьте, что вы только что выполнили дюжину команд. Сказать...

$ cd foo/    # history cmd #10000 (my history is very long)
$ ... more commands ...
$ cd ../     # history cmd #10012 

Я знаю, что могу перезапустить их с конкатенацией, !-12 && !-11 && !-10 && (and so on) && !!если они только что были запущены (маловероятно) или !10000 && !10001 && !10002 && (and so on), но есть ли более простой способ, чем набирать вручную каждый номер истории с ударом и амперсандами?

Возможно, в bash есть какие-то диапазоны, о которых я не знаю?

например !{10000-10012}# как то так, только работает.

inanutshellus
источник

Ответы:

23

Для этого и нужна fcкоманда.

fc -12 -1

или

fc 10000 10012

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

jw013
источник
Ах, ха! Brilliant! fc, Исправить команды. Имеет смысл!
inanutshellus
1
Чтобы избежать запуска редактора (опасно!), Вы можете использоватьfc -e true -12 -1
BingsF
недоступно в Ubuntu
okwap
1
@okwap, ерунда. Он определен в POSIX и, безусловно, доступен в Ubuntu. (Это встроенная оболочка, хотя, как и должно быть, поэтому, если вы заглядываете внутрь, /binвы ее не найдете.)
Wildcard