РЕДАКТИРОВАТЬ: Вы можете сделать это POSIX-совместимым способом с помощью инструмента исправленияfc
:
fc 77 79
Это откроет ваш редактор (вероятно vi
) с командами с 77 по 79 в буфере. При сохранении и выходе ( :x
) команды будут запущены.
Если вы не хотите их редактировать и вы ОЧЕНЬ уверены, что знаете, какие команды вы вызываете, вы можете использовать:
fc -e true 77 79
Он используется true
в качестве «редактора» для редактирования команд, поэтому он просто завершает работу без внесения каких-либо изменений, и команды запускаются как есть.
ОРИГИНАЛЬНЫЙ ОТВЕТ:
Вы можете использовать:
history -p \!{77..79} | bash
Это предполагает, что вы не используете псевдонимы или функции или какие-либо переменные, которые присутствуют только в текущей среде выполнения, поскольку, конечно, они не будут доступны в новой запускаемой оболочке.
Лучшее решение (спасибо Майклу Хоффману за напоминание в комментариях):
eval "$(history -p \!{77..79})"
Один из очень, очень немногих случаев, когда eval
это действительно уместно!
Также см:
!77 ; !78 ; !79
порядке?