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=ignoredups
está definido em~/.bashrc
, se ainda não estiver. -
Para evitar a nova execução da pesquisa
all_prev
que 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
).