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.