Comando para manter o histórico do bash limpo
Dica publicada em Linux / Comandos
Comando para manter o histórico do bash limpo
Esta dica serve pra quem costuma usar bastante o histórico do bash, mas detesta os comandos repetidos
nele.
Garimpando a internet encontrei este comando que remove as linhas duplicadas sem alterar a ordem original do arquivo:
nl -n rz [file] | sort -k2 -u | sort | cut -f2-
Onde "file" é o nome do arquivo que se quer retirar as linhas duplicadas. Se for usada a variável de sistema do arquivo histórico do usuário. O comando fica assim:
nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2-
Se você quiser verificar como o comando funciona passo a passo:
nl -n rz $HISTFILE
$ nl -n rz $HISTFILE | sort -k2 -u
$ nl -n rz $HISTFILE | sort -k2 -u | sort
$ nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2-
Acrescentei alguns comandos para que conseguisse salvar a saída do comando acima no histórico do usuário. Ele ficou assim:
TMPFILE=`mktemp ./temp.XXX` && nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2- >> $TMPFILE && mv $TMPFILE $HISTFILE
Tentei melhorar a ideia acima criando um aliás, mas não consegui. Se alguém conseguir coloca nos comentários.
O que consegui foi criar uma função no ~/bashrc do usuário. Assim:
Após criada a função é só digitar "limpar_bash" no terminal do usuário e pronto.
Funciona perfeitamente em Debian e derivados.
Garimpando a internet encontrei este comando que remove as linhas duplicadas sem alterar a ordem original do arquivo:
nl -n rz [file] | sort -k2 -u | sort | cut -f2-
Onde "file" é o nome do arquivo que se quer retirar as linhas duplicadas. Se for usada a variável de sistema do arquivo histórico do usuário. O comando fica assim:
nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2-
Se você quiser verificar como o comando funciona passo a passo:
nl -n rz $HISTFILE
$ nl -n rz $HISTFILE | sort -k2 -u
$ nl -n rz $HISTFILE | sort -k2 -u | sort
$ nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2-
Acrescentei alguns comandos para que conseguisse salvar a saída do comando acima no histórico do usuário. Ele ficou assim:
TMPFILE=`mktemp ./temp.XXX` && nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2- >> $TMPFILE && mv $TMPFILE $HISTFILE
Tentei melhorar a ideia acima criando um aliás, mas não consegui. Se alguém conseguir coloca nos comentários.
O que consegui foi criar uma função no ~/bashrc do usuário. Assim:
function limpar_bash()
{
TMPFILE=`mktemp ./temp.XXX`&&
nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2- >> $TMPFILE&&
mv $TMPFILE $HISTFILE
}
{
TMPFILE=`mktemp ./temp.XXX`&&
nl -n rz $HISTFILE | sort -k2 -u | sort | cut -f2- >> $TMPFILE&&
mv $TMPFILE $HISTFILE
}
Após criada a função é só digitar "limpar_bash" no terminal do usuário e pronto.
Funciona perfeitamente em Debian e derivados.
sem mais delongas... acrescentei a parte do bash_rc e rodei limpar_bash e de fato funciona, claro que fiz uma cópia antes hehehehe
favoritado!
[]'s