Respostas:
Se você deseja executar um comando sem salvá-lo no histórico, acrescente um espaço extra
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
Para que isso funcione, você precisa ignorespaceou ignorebothentra HISTCONTROL. Por exemplo, execute
HISTCONTROL=ignorespace
Para tornar essa configuração persistente, coloque-a no seu .bashrc.
Se você já executou o comando e deseja removê-lo do histórico, use primeiro
history
para exibir a lista de comandos em seu histórico. Encontre o número ao lado do que você deseja excluir (por exemplo, 1234) e execute
history -d 1234
Além disso, se a linha que você deseja excluir já tiver sido gravada em seu $ HISTFILE (o que normalmente acontece quando você encerra uma sessão por padrão), será necessário escrever novamente em $ HISTFILE ou a linha reaparecerá quando você abrir um novo sessão:
history -w
history -a, nesse caso, já está gravado no arquivo de histórico, em vez de sair na configuração normal. Especificamente: mywiki.wooledge.org/BashFAQ/088
history -w. Caso contrário, quando você sair, a linha excluída ainda estará lá!
history -wafter history -d {num}era exatamente o que eu precisava - que petiscos críticos deveriam ser adicionados à resposta, caso contrário, um usuário pode pensar que uma exclusão temporária do shell atual é realmente permanente.
history -wé necessário para entradas que já foram gravadas no .bash_historyarquivo. Como reproduzir (por exemplo, no CentOS 7 com configuração de estoque): 1. logon 2. comando enter echo foo3. logout 4. logon novamente 5. excluir entrada para echo foo6. logout 7. logon 7. logon novamente: a entrada ainda está lá. Dependendo de como você configura seu histórico do bash, talvez você possa reproduzir esse problema de outras maneiras - ou seja, se você provocar a gravação do histórico antes do logout.
Para limpar todo o seu histórico, use
history -cPara excluir uma única linha, use
history -d linenumberEu tenho isso no meu ~/.bashrc, o que faz com que o comando $ forgetexclua o comando anterior do histórico
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
history -d $( history | tail -n 1 | cut -f 1 -d " " )seria mais simples?
history | tail -n1é o historypróprio comando, portanto, a exclusão desse número obtém a entrada errada. No entanto, history -d $( history | awk 'END{print $1-1}' )combina a seleção de linha, seleção de campo e subtração.
Você sempre pode editar e remover entradas de ~/.bash_history, útil quando desejar remover uma entrada ou mais de uma entrada
Se você deseja esquecer toda a sessão do bash, pode killexecutar o processo atual do bash. Como a variável $$mantém o pidshell atual, você pode:
kill -9 $$
Você precisa escrever as alterações depois de limpar o histórico. E se você não gostaria de ter o comando wipe no histórico, é necessário executar o comando assim:
history -c && history -w && logout
Boa sorte.
Adding another point suppose if you want to delete a range of history lines
You can use below script.
Below example will delete history output from line 1 to line 150.
for i in `history | awk 'NR > 1 && NR <=150{print $1}'`; do history -d $i; done