Limpando o History do bash
O bash shell normalmente vem com um arquivo de history para ajudar na repetição de comandos executados. Entretanto muitas vezes, se faz necessário não ter as informações armazenadas durante a sua sessão no shell, guardadas. Para isso podemos lançar mão das seguintes funções listadas abaixo para apagar as linhas que, por ventura, não são necessárias que fiquem guardadas entre as sessões do terminal.
Primeiro maneira - apagando através de uma faixa de índices
Desta maneira podemos indicar o começo e o fim da lista de comando que você queira apagar. Para isso, basta criar a função abaixo:
rmhistrange () { start=$1; end=$2; count=$(( end - start )); while [ $count -ge 0 ]; do history -d $start; ((count--)); done history -w }
Depois basta, usar na linha de comando do seguinte modo:
rmhistrange 10 15
Este comando apagará as linhas do history entra o décimo e o décimo-quinto comando.
Segunda maneira - apagando os últimos X comandos
Neste modo, será removido os últimos X comandos inseridos na lista de histórico do seu shell. Para isso, devemos definir a seguinte funcão:
rmhistqty () { count=$1; end=$(history | wc -l); start=$(( end - count )); while [ $count -ge 0 ]; do history -d $start; ((count--)); done history -w }
A utilização é semelhante a anterior, basta fazer:
rmhistqty 10
para remover os dez últimos comandos da lista
Terceiro modo - Através da inserção de um marcador na lista de histórico
Neste modo, deve-se previamente inserir um MARCADOR, por exemplo usando o comando abaixo:
echo "MARCADOR"
e depois com a definição da seguinte função que nos permitirá remover todo o histórico do marcador até o fim da lista de comandos do history.
rmhistmark () { start=$(history | grep MARCADOR | awk '{ print $1} ' | head -n1); end=$(history | wc -l); count=$(( end - start )); while [ $count -ge 0 ]; do history -d $start; ((count--)); done; history -w }
Com essas funcções podes remover qualquer traço de operações que tenhas realizado na linha de comando de um shell bash, não sendo assim possível que alguém copie os comandos que você tenha realizado durante uma sessão de operações por linha comando.