history
O comando mostra todos os resultados, mas podemos filtrar para obter um comando específico usando history | grep searchingCommand
. É realmente útil.
Mas o problema é que também mostra esses comandos que foram inseridos com erro de digitação ou que não tiveram êxito. Então, identificar o correto é realmente uma dor. Eu verifiquei este link: Histórico de comando seletivo no terminal? mas essa não foi a minha solução.
Portanto, existe uma maneira de excluir esses comandos do histórico que estavam incorretos no momento digitado ou posteriormente?
Respostas:
Gostaria de adicionar outro método para modificar (ou excluir) as entradas do histórico, que achei acidentalmente quando estava trabalhando com o bash:
Para demonstrar isso, comece executando os três comandos a seguir no bash:
Agora você pode selecionar esses comandos novamente usando as teclas de seta ou Ctrl+ pe Ctrl+ n.
Digamos que você queira modificar os dois primeiros comandos. Mova-se pelo histórico até
echo 1
aparecer e altere-o paraecho 1 - changed
, mas NÃO PRESSIONE ENTER. Se você agora avançar no seu histórico, essa linha permanecerá em seu estado modificado e você poderá se afastar e voltar a ela. Agora vá para a linhaecho 2
e mude paraecho 2 - changed
, novamente, não pressione enter. Para salvar as alterações nessas linhas, selecione qualquer comando no histórico, exceto os dois, e pressione Ctrl+ c.Obviamente, em vez de modificar a entrada do histórico, você também pode removê-la, o que resultará em uma linha vazia nessa entrada. Para excluir a linha atualmente exibida no prompt, pressione Ctrl+ e(que pula para o final da linha) seguido de Ctrl+ u(que exclui o texto do início da linha para o cursor).
Consulte também https://unix.stackexchange.com/questions/195668/what-can-cause-an-item-to-be-deleted-from-my-bash-history/195726#195726 para obter uma explicação mais detalhada sobre o formação técnica.
Maneira mais simples:
Nota :
Isso altera apenas os comandos da sessão atual. Se queremos alterar comandos antigos e salvar as alterações, precisamos executar o seguinte comando antes de fechar o terminal:
fonte
ctrl+r
para pesquisar o comando que você deseja excluir / modificar. 2.end
para mover o comando e excluir / modificar o comando. 3.ctrl+n
para ir para a próxima linha e, em seguida, 4.ctrl+c
Usar:
para excluir a entrada do histórico no deslocamento
OFFSET
antes mesmo de ser adicionada ao arquivo de histórico do bash. Para descobrir o que é certoOFFSET
, você precisa apenas executar ohistory
comando. É o número desde o início da linha que contém a entrada do histórico que você deseja excluí-la.E para salvar as modificações no histórico, use:
Veja mais detalhes neste guia .
fonte
history -w
pós-processamento para salvar as alterações. OFFSET também significa qual número éhistory
exibido. Se a linha que você está tentando excluir for 873, usehistory -d 873
.history -w
depoishistory -d
para salvar as alterações.Edite o arquivo
~/.bash_history
e exclua uma vez com erros de digitaçãoPor exemplo, insira este comando:
Edite o que quiser e depois salve o arquivo e reinicie o terminal. O comando raiz é:
se você deseja excluir todos
history -c
devem fazer o truquefonte :
fonte
.bash_history
?history -c
não funciona Quando eu fecho o terminal e o abro novamente, os históricos não são excluídos. -1 sua resposta-c Clear the history list. This may be combined with the other options to replace the history list completely.
sourcehistory -w
depoishistory -c
para escrever as alterações.Se você deseja excluí-lo imediatamente do primeiro terminal, adicione o seguinte ao seu arquivo ~ / .bashrc.
e reinicie o seu terminal.
Você pode adicioná-lo em qualquer lugar do arquivo .bashrc. Adicionei como abaixo, juntamente com outras coisas relacionadas ao histórico.
Normalmente, durante uma sessão bash, os comandos executados não são gravados em .bash_history até que a sessão seja encerrada; portanto, ele
PROMPT_COMMAND='history -a'
entra e depois no comando .bash_history.Agora, sempre que você cometer um erro ou erro em um comando e quiser excluí-lo, basta executar o seguinte
e tada seria deletado.
Para simplificá-lo, você pode aliasá-lo para algo mais simples e usá-lo como
Portanto, a execução
rh
removerá o último comando executado do histórico.O acima é um alias temporário que dura apenas uma sessão. Para torná-lo permanente ou persistente, adicione
para .bashrc
NOTA
Não deve haver espaço nos dois lados da
=
Se você não quiser o alias, também poderá fazer o seguinte
Crie um nome de commad
rh
e coloque-o no/bin
diretório:Abra um arquivo diga
rh
e cole o seguinte código, salve e feche:sed -i '$d' ~/.bash_history
Torne
rh
executável e coloque-o no/bin
diretório:Agora use o
rh
comando para excluir o comando recente do histórico.fonte
PROMPT_COMMAND='history -a'
no.bashrc
arquivo? E o que exatamente isso fará? Eu tenteised -i '$d' ~/.bash_history
funcionar sem edição.bashrc
!! Mas a coisa alias não está funcionando .. Vou aceitar a sua resposta se você acabou de elaborar a minha pergunta e fazer apelido de trabalho .. :).bash_history
arquivo ..: P de qualquer maneira .. Não é um problema .. Eu fiz meu próprio comando e coloquei-o no/bin
diretório. Desde por causa do seu comando:sed -i "$d" ~/.bash_history
está funcionando bem. Eu aceito a sua resposta .. :)para remover várias linhas (por exemplo, de 1974 a 1990, verifique com o
history
comando):observe que o número da linha a remover é sempre o mesmo, pois você o remove constantemente e passa para o próximo.
fonte
Se você estiver usando a opção "set -o vi" no bash (muito útil para pesquisar novamente com a tecla Escape), poderá procurar a linha e excluir a linha com "dd" da mesma forma que em "vi".
fonte
j
ouk
depoisdd
para torná-lo realmente claro o comando do histórico. Se eu digitar outro comando, ou apenas pressionarEnter
, o bash parece assumir que é apenas um novo comando e que ele deve manter o comando antigo no histórico. Também é interessante observar que, quando feito corretamente, limpa o comando, mas não o exclui - o resultado são entradas do histórico em branco. Mas isso é bom o suficiente para remover senhas que eu fui forçado a digitar na linha de comando e muito mais fácil do que outras respostas, então muito obrigado por postar isso!Eu tive uma situação em que tinha entradas supérfluas na minha história do bash de um Yubikey - talvez 50 ou mais, combinando 'ccccc .....'. Idealmente, eu queria uma maneira de excluir entradas correspondentes a um padrão, o que suponho que você poderia fazer com sed ou algo assim, supondo que seu histórico ignore espaços em branco.
Enfim, fiquei preguiçoso e acabei usando o vim, procurando por 'cccc' e usando 'dd' enquanto andava de bicicleta em todas as partidas. Não demorou mais que um minuto.
fonte