Bash: Executa uma série de comandos da história

2

Como posso executar uma série de comandos do meu histórico bash? Por exemplo, se eu quiser executar os comandos numerados de 34 a 42 no meu histórico bash, Eu tentei coisas como:

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

mas isso não faz o truque, não é? Alguma idéia?

Obrigado!

    
por Frank Brenner 16.02.2012 / 00:28

2 respostas

6

O melhor que consigo pensar é algo assim. Basicamente, você canaliza o histórico para o awk, que imprime linhas com um número em um determinado intervalo. Os resultados são passados para um sub-shell.

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

Algo baseado em esta pergunta .

    
por 16.02.2012 / 02:12
1

Infelizmente, parece que o History (e o comando fc equivalente) está desativado no script. Não encontrei nenhuma documentação sobre o motivo, sendo que a mais próxima é a página tldp que explica o Histórico e o Bash .

    
por 16.02.2012 / 01:51