Tenho algumas perguntas sobre o histórico do terminal ou da linha de comando armazenado ~/.bash_history
.
Eu posso ver o arquivo no terminal com o
history
comando, mas se eu tentar abri-lo,gedit bash_history
o arquivo estará completamente vazio. Por quê?Eu descobri como excluir um certo número de linhas no arquivo do terminal com esta linha de código:
for i in {1..N}; do history -d N; done
onde N é o número de linhas (ou comandos) que você deseja excluir, mas agora o arquivo de histórico mostra esse último comando e isso não é muito inteligente se você estiver tentando cobrir suas coisas. Portanto, a pergunta é: como posso fornecer a última linha de código e garantir que isso não seja registrado?
command-line
bash
gedit
bash-history
Sei lá
fonte
fonte
Respostas:
Você acabou de esquecer o ponto anterior, o comando para abrir o arquivo de histórico do terminal (bash) é
Este arquivo é atualizado apenas quando você fecha um terminal.
Para remover as últimas 10 linhas deste arquivo e não gravar esse comando, abra um novo terminal e execute a seguinte cadeia de comandos:
ou
ou
sed
ouhead
apaga respectivamente as linhas selecionadas~/.bash_history
,history -c
limpa o histórico do terminal eexit
fecha-o.fonte
for
+sed
:head -n -N
em maiúsculasN
é o número de linhas a serem removidas. stackoverflow.com/a/13380679/711006head -n -N testfile > testfile
apenas limpa o arquivo! Eu adicionei uma solução alternativa, no entanto, certamente não é mais curta.head
não pode funcionar no local comosed
. Eu estava procurando principalmente um únicosed
comando substituindo seufor
loop. Existem algumas opções na página que vinculei, mas elas não parecem tão compreensíveis quanto o seu código.O arquivo bash_history é um arquivo oculto, começando com um ponto. Você precisa fazer
Isso abrirá o arquivo no gedit.
fonte
Se você deseja excluir apenas certas partes do seu log de comandos , os métodos acima estão bem. Se você deseja interromper o log de comandos para uma sessão bash específica, emita o comando
Para ser mais drástico, se você não deseja que nenhum de seus comandos seja registrado , você pode fazer
Observe que o primeiro método entraria em vigor apenas para uma única sessão, enquanto o segundo método interromperia o log de comandos para todas as sessões futuras.
fonte
Sei que isso já tem uma resposta aceita, mas é assim que faço desde os anos 80. É uma ótima maneira de esconder suas faixas e é uma abordagem multifásica. Na maioria das vezes é aquele que não é notado, a menos que esteja prestando atenção. Aqui está como é feito.
Abra um terminal / shell / sessão e faça:
saia do shell, abra um terminal / shell / sessão e faça: Aqui estão algumas maneiras criativas de apagar o histórico permanentemente
1:
2 (crie um histórico falso)
então, para uma boa medida:
sair do shell
abra um novo shell e digite
o que o torna menos perceptível é que, se alguém fizer um ls -ratl, o ~ / .bash_history acabará por desaparecer no barulho da lista de diretórios. Não aparecerá como um link que atrairia atenção desnecessária. A maioria das pessoas não faz um -a em sua raiz, o que é útil quando a emulação é desejada.
A desvantagem dessa abordagem é que você perde a capacidade de voltar e recuperar seu histórico. o arquivo ~ / .bash_history real também pode acabar no topo de uma lista de diretórios, pois pode acabar com uma data de modificação muito antiga ao longo do tempo, o que por si só pode levar à descoberta de que algo está errado.
fonte
9999999 dd
para excluir todas as linhas no arquivo, em seguida:%d
,:1,$d
oudG
trabalho muito melhor1) corra
sh
; isso gera um subshell de cinzas, que não registra a história. Editar a partir daí2) Adicione a linha
HISTCONTROL=ignoreboth
para.bashrc
, e fazerexec bash
para substituir permanentemente o shell atual com um reinicializado um, em seguida, fazer todos os comandos que você não quer registrados com um espaço à esquerda.fonte
desde que eu não posso comentar ainda, adicionarei meus comentários como resposta:
man history
vai responder tudo.A resposta ao número 1 é que a história está na memória.
history -a
para salvar no arquivo imediatamente.history -w
também salvará, mas poderá atrapalhar outras sessões.resposta 2:
history -a
gedit, exclua as linhas que você deseja,history -r
fonte
O histórico não é salvo até você sair do shell. Tente sair do shell e, em seguida, consulte .bash_history novamente. O histórico do comando deve estar lá.
fonte