Como apagar os resultados selecionados do histórico bash?

49
O comando

history mostra todos os resultados, mas podemos filtrar para obter um comando específico usando history | grep searchingCommand . É realmente útil.

Mas o problema é que ele mostra os comandos que também foram digitados com erro de digitação ou que não tiveram sucesso. Em seguida, identificar o correto é realmente uma dor. Eu verifiquei este link: Histórico de comando seletivo no terminal? mas que era não é a minha solução.

Existe uma maneira de excluir esses comandos do histórico que estava incorreto no momento da digitação ou posterior?

    
por Saurav Kumar 12.09.2013 / 11:28

5 respostas

5

Gostaria de adicionar outro método de modificação (ou exclusão) de entradas do histórico, que achei acidentalmente quando estava trabalhando com o bash:

Para demonstrar isso, comece executando os seguintes três comandos no bash:

$ echo 1
1
$ echo 2
2
$ echo 3
3

Você pode agora selecionar estes comandos novamente usando as teclas de seta ou Ctrl + p e Ctrl + n .

Digamos que você queira modificar os dois primeiros comandos. Percorrer o histórico até echo 1 aparecer e alterá-lo para echo 1 - changed , mas NÃO PRESSIONE ENTER. Se você agora se mover mais através de seu histórico, esta linha permanece em seu estado modificado e você pode se afastar e voltar para ela. Agora vá para a linha echo 2 e mude para echo 2 - changed , novamente não pressione enter. Para salvar as alterações nessas linhas, selecione qualquer comando no histórico, exceto para esses dois, e pressione Ctrl + c .

É claro que, 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 apagar a linha atualmente exibida no prompt, pressione Ctrl + e (que salta para o final da linha) seguido por Ctrl + < kbd> u (que apaga o texto desde o início da linha até o cursor).

Veja também link para uma explicação mais detalhada do histórico técnico.

Caminho mais simples:

  1. ctrl + r para procurar o comando que deseja apagar / modificar.
  2. end para selecionar o comando pesquisado para excluir / modificar
  3. Apague ou modifique o comando selecionado (não pressione enter ou ctrl + c )
  4. seta para cima (ou ctrl + p ) ou seta para baixo (ou ctrl + n ) para selecionar qualquer outro comando.
  5. ctrl + c É isso!

Nota :

Isso altera apenas os comandos da sessão atual. Se quisermos alterar os comandos antigos e salvar as alterações, precisamos executar o seguinte comando antes de fechar o terminal:

history -w
    
por Stefan Hamcke 31.01.2018 / 17:15
121

Uso:

history -d OFFSET

para excluir a entrada do histórico no deslocamento OFFSET antes mesmo de ser adicionado ao arquivo histórico do bash. Para descobrir o OFFSET correto, você só precisa executar o comando history . É o número desde o início da linha que contém a entrada do histórico que você deseja excluir.

E para salvar as modificações no histórico, use:

history -w

Veja mais detalhes em este guia .

    
por user299481 27.02.2014 / 11:14
18

Edite o arquivo ~/.bash_history e exclua uma vez com erros de digitação

Por exemplo, insira este comando:

gedit ~/.bash_history

Edite algo que você goste e depois salve o arquivo e reinicie o terminal. O comando root é:

sudo -i 
inser your password
gedit ~/.bash_history

se você quiser deletar todos os history -c deve fazer o truque

  

SINTAXE

history
history [n]
history -c
history -d offset
history [-anrw] [filename]
history -ps arg
     

KEY

     

-c Limpa a lista do histórico. Isso pode ser combinado com           as outras opções para substituir completamente a lista do histórico.

     deslocamento de

-d           Exclua a entrada do histórico no deslocamento da posição.           offset deve ser especificado como aparece quando o histórico é exibido.

     

-a Anexa as novas linhas do histórico (linhas do histórico inseridas desde           o início da sessão atual do Bash) para o arquivo de histórico.

     

-n Anexa as linhas do histórico que ainda não foram lidas do histórico   Arquivo           para a lista de histórico atual. Estas são linhas anexadas ao           arquivo de histórico desde o início da sessão atual do Bash.

     

-r Leia o arquivo do histórico atual e anexe seu conteúdo ao   lista de histórico.

     

-w Escreva o histórico atual no arquivo de histórico.

     

-p Faz a substituição do histórico nos args e mostra o   resultado           na saída padrão, sem armazenar os resultados na lista de histórico.

     

-s Os argumentos são adicionados ao final da lista de histórico como um único   entrada.

source :

por blade19899 12.09.2013 / 11:32
15

Se você quiser excluí-lo imediatamente do mesmo terminal primeiro, adicione o seguinte ao seu arquivo ~ / .bashrc.

PROMPT_COMMAND='history -a' 

e reinicie o seu terminal.

Você pode adicioná-lo em qualquer lugar no arquivo .bashrc. Eu adicionei como abaixo junto 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, PROMPT_COMMAND='history -a' insere o comando e então lá em .bash_history.

Agora, sempre que você cometer erro ou erro em um comando e quiser excluí-lo, execute o seguinte

sed -i '$d' ~/.bash_history

e tada seria deletado.

Para tornar mais simples, você pode aliasá-lo a algo mais simples e usá-lo como

alias rh ='sed -i '\''$d'\'' ~/.bash_history'

Portanto, executar rh removerá o último comando executado do histórico.

O texto acima é um aliasing temporário que dura apenas uma sessão. Para torná-lo permanente ou persistente, adicione

alias rh = 'sed -i '\''$d'\'' ~/.bash_history' 

para .bashrc

OBSERVAÇÃO

Não deve haver espaço nos dois lados de =

Se você não quiser criar um alias, também poderá fazer o seguinte

Faça um nome de commando rh e coloque-o no diretório /bin :

  • Abra um arquivo, digamos rh e cole o código a seguir, salve e feche:

    sed -i '$d' ~/.bash_history

  • Crie o rh executável e coloque-o no diretório /bin :

     chmod +x rh
     sudo cp rh /bin 
  • Agora use o comando rh para excluir o comando recente do histórico.

por Stormvirux 12.09.2013 / 12:54
1

Se você estiver usando a opção "set -o vi" no bash (muito útil para pesquisar de volta com a tecla Escape), então você pode procurar a linha e excluir a linha com "dd" da mesma maneira que você faz em " vi ".

    
por The IT Guy 29.10.2017 / 00:05

Tags