Como edito o histórico do terminal Mac OS X?

12

Como edito meu histórico do bash no Mac OS X? Digitei uma senha nessa janela por engano e não quero remover todo o meu histórico.

Karthick S
fonte

Respostas:

14

Editar o .bash_historyarquivo é apenas uma questão de abrir o arquivo com um editor. Existem algumas maneiras de conseguir isso.

  1. No Terminalvi ~/.bash_history , digite apenas , edite o arquivo como desejar e salve. Essa opção pode ser complicada, se você não estiver acostumado ao vi , é claro.
  2. Torne o arquivo visível seguindo estas instruções, por exemplo, abra-o como qualquer outro arquivo, modifique-o e salve.
  3. No terminal, basta digitar open ~/.bash_history -a /Applications/TextEdit.app. Este comando abrirá o arquivo com o TextEdit , você pode escolher qualquer outro editor de texto, é claro. Modifique o arquivo e salve.

Para que as alterações sejam visíveis, basta reiniciar o bash.

Thecafremo
fonte
Estou recebendo "permissão negada". Quando eu faço um sudo, não consigo ver todos os comandos inseridos.
precisa
1
@KarthickS Você está fazendo isso exatamente?
Thecafremo
Se eu olhar o conteúdo de .bash_history, o conteúdo será diferente da saída de um comando history. Eu reconheço os dois, o conteúdo do arquivo é mais antigo. O que acontece se várias janelas de comando estiverem abertas? Eles não parecem compartilhar o mesmo histórico de comandos. PS: verifiquei que estou usando o bash.
Victor Engel
1
Eu acho que encontrei minha resposta. ECHO $ ​​HISTFILE mostra o que você deseja editar.
Victor Engel
10

No tipo de terminal historye anote o número da linha. Próxima chamada history -d noted-line-number. Você pode verificar se a linha foi excluída usando historynovamente.

Unnamed_1
fonte
2
Isso não funciona no Yosemite com ZSH.
Paulo Oliveira
A questão era sobre bash, não zsh. Leia cuidadosamente!
Unnamed_1
1
@DmitryDupelov você está certo, desculpe incomodar. Enfim, é um lembrete para futuros leitores (que também podem perder esse detalhe). Obrigado por corrigir meu comentário.
Paulo Oliveira
2
nano ~/.bash_history

quando você terminar, ctrl+x e volte para aceitar uma resposta certa, cara

Matian2040
fonte
0

Eu acho que a resposta de Dmitry é ideal se for feita antes de salvar o histórico - por padrão, o salvamento ocorre na saída do shell / terminal.

Se você já salvou o histórico em ~ / .bash_history, prefiro a resposta do Thecafremo, mas sugiro adicionar uma etapa de saída do Terminal para garantir que nenhuma das instâncias do bash carregue o histórico e o salve novamente. Isso é especialmente complicado se você tiver vários terminais e tiver ativado qualquer tipo de atualização do histórico de comando por comando.

Fundo:

  • O bash salva o histórico em uma instância do shell
  • O bash pode gravar esse histórico em um arquivo, o que normalmente acontece quando você sai do shell / Terminal
  • O bash pode ler de um arquivo no histórico, o que normalmente acontece quando você abre um shell / Terminal
  • é possível alterar o comportamento padrão para que o histórico seja propagado mais cedo, o que pode migrar seu BAD_TEXT para o arquivo e para outras janelas

Independentemente do método usado, eu acrescentaria uma etapa: verifique o sucesso!

  1. Saia do Terminal.app
  2. Abra novamente o Terminal.app
  3. Confirme se o texto ofensivo não está no histórico - de preferência de uma maneira que não crie histórico adicional. Ou seja, não grep BAD_TEXT .bash_history! Este novo comando entraria na história. Eu apenas abriria .bash_history no seu editor favorito e pesquisaria nele BAD_TEXT.

Isso deve lhe garantir que você eliminou o BAD_TEXT, independentemente do tipo de configuração louca do bash que você possa encontrar.

sábio
fonte