Para executar todos os comandos que contêm uma string específica (por exemplo, "checkout" ) ou regex (por exemplo, "checkout.+file\d" ) de seu bash history :
grep -E "string_exp" $HOME/.bash_history | while read line; do eval "$line"; done
Você pode salvá-lo como uma função em ~/.bashrc :
#!/bin/bash
all_prev () {
grep -E "$1" $HOME/.bash_history | while read line; do eval "$line"; done
}
Então, no futuro, você pode simplesmente digitar:
all_prev checkout
EDITAR:
-
Para evitar a execução de muitos comandos duplicados à medida que seu arquivo
.bash_historyé acumulado ao longo do tempo, verifique seexport HISTCONTROL=ignoredupsestá definido em~/.bashrc, se ainda não estiver. -
Para evitar a nova execução da pesquisa
all_prevque contém o termo de pesquisa, use regex^e$para especificar caracteres no início e no final da linha.
No entanto, talvez você também deva verificar um shell com um filtro de histórico mais poderoso, como zsh (ou mesmo fish ).