Estou trabalhando no Mac OSX, então acho que estou usando o bash ...?
Às vezes, insiro algo que não quero ser lembrado na história. Como faço para removê-lo?
bash
shell
command-line
command-history
B Seven
fonte
fonte
Respostas:
Medidas preventivas
Se você deseja executar um comando sem salvá-lo no histórico, acrescente um espaço extra
Para que isso funcione, você precisa
ignorespace
ouignoreboth
entraHISTCONTROL
. Por exemplo, executePara tornar essa configuração persistente, coloque-a no seu
.bashrc
.Limpeza post mortem
Se você já executou o comando e deseja removê-lo do histórico, use primeiro
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
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:
fonte
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/088history -w
. Caso contrário, quando você sair, a linha excluída ainda estará lá!history -w
afterhistory -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_history
arquivo. Como reproduzir (por exemplo, no CentOS 7 com configuração de estoque): 1. logon 2. comando enterecho foo
3. logout 4. logon novamente 5. excluir entrada paraecho foo
6. 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
Para excluir uma única linha, use
fonte
Eu tenho isso no meu
~/.bashrc
, o que faz com que o comando$ forget
exclua o comando anterior do históricofonte
history -d $( history | tail -n 1 | cut -f 1 -d " " )
seria mais simples?history | tail -n1
é ohistory
pró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 entradafonte
Se você deseja esquecer toda a sessão do bash, pode
kill
executar o processo atual do bash. Como a variável$$
mantém opid
shell atual, você pode:fonte
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.
fonte
fonte