Назад | Перейти на главную страницу

Bash: выполнить серию команд из истории

Как я могу выполнить серию команд из моей истории bash? Например, если я хочу выполнить команды с номерами от 34 до 42 в моей истории bash, я пробовал такие вещи, как:

for n in $(seq 34 42); do
   exec \!$n;
done

но это не совсем так, правда. Любые идеи?

Спасибо!

Лучшее, о чем я могу думать, это что-то вроде этого. Обычно вы передаете историю в awk, который печатает строки с номерами в определенном диапазоне. Результаты передаются во вспомогательную оболочку.

history | awk '$1>32 && $1<42 {$1="";print substr($0,2)}' | bash

В некоторой степени основано на этот вопрос.

К сожалению, похоже, что History (и эквивалентная команда fc) отключена в сценариях. Я не нашел никакой документации относительно того, почему, наиболее близким из них является tldp-страница с описанием истории и Bash.