Eu uso o Bash todos os dias como minha concha preferida. Como tendo a digitar rapidamente, ocasionalmente digito incorretamente um comando e o executo acidentalmente antes de corrigir o erro de digitação, resultando no comando digitado incorretamente no meu histórico do bash (o que significa que preciso evitar quando pressionar a seta para cima). Da mesma forma, posso digitar um comando que é sintaticamente correto, mas resulta em um erro (e, portanto, pode não valer a pena manter o comando no histórico)
Então, escrevi uma pequena função Bash para remover o último comando do histórico do Bash, que entrará em vigor imediatamente. Você pode opcionalmente remover os últimos n comandos se passar um argumento inteiro. Eu chamo a função rmlastcmd
.
Basta adicionar o seguinte ao seu .bashrc
no Linux (ou .bash_profile
no macOS):
# Also be sure to add rmlastcmd to your HISTIGNORE;
# otherwise, rmlastcmd will always remove itself
export HISTIGNORE='rmlastcmd*'
# Remove last n commands from Bash history (n defaults to 1)
rmlastcmd() {
local n="$([ -n "$1" ] && echo "$1" || echo 1)"
local i
for ((i=0; i<$n; i++)); do
history -d "$((HISTCMD-1))"
done
}
A execução rmlastcmd
é mais fácil se você tiver o bash-complete instalado e habilitado, já que pode simplesmente digitar rml<tab>
. Aproveitar!