Eu uso muito o Terminal e, às vezes, estou executando comandos, que não são coisas que eu não quero que os outros vejam, mas mais comandos que se eu acidentalmente disparasse e executasse causaria muitos problemas.
Por isso, estou me perguntando se existe, ou posso fazer, algum tipo de 'modo de navegação anônima' do Terminal que me permitiria, após a execução de um determinado comando, parar de gravar meu histórico e só começar a gravar depois de executar um começar a gravar o histórico novamente comando e sair do "modo de navegação anônima", ou simplesmente reinicio o terminal?
Porque eu me vejo mais tarde removendo coisas do meu .bash_history
, quando seria muito mais fácil se eu pudesse parar a gravação lá em primeiro lugar, ou pelo menos consegui tentar gravar em algum lugar onde simplesmente não estaria permitido, e acabaria não gravando.
.bash_history
. (Ubuntu 15.04 arruinada Terminal, sorte este é um USB ao vivo.)Respostas:
Execute um comando sem colocá-lo no histórico:
Simplesmente coloque um espaço antes do comando. O Bash ignorará os comandos com um espaço precedido:
Exemplo: Space
echo "Some secret text"
Nota: Isso funciona apenas se a
HISTCONTROL
variável estiver definida comoignorespace
ouignoreboth
.Desative o histórico temporariamente:
set +o history
ou Spaceshopt -uo history
desative o histórico.set -o history
oushopt -so history
para habilitá-lo novamente.Desabilite o histórico da sessão atual (não se lembrará de nenhum comando da sessão):
Nota: Você poderá ver os comandos pressionando Upaté fechar o terminal.
Remova um comando do histórico:
Corre Space
history | grep "part of your secret command"
Ele mostrará uma lista de comandos executados anteriormente, neste formato:
Selecione o número da entrada à esquerda do comando. Você pode copiá-lo com Ctrl+ Shift+C
Execute Space
history -d <number>
onde<number>
está o número da entrada para remover a entrada.Você pode colar esse número com Ctrl+ Shift+V
Outras respostas interessantes:
fonte
history -d
para remover uma linha, isso irá remover o conteúdo da linha, mas você nunca pode remover o fato de que você executouhistory -d
(a menos que você primeiro usoset +o history
antes de executarhistory -d
)unset HISTFILE
abordagem também funciona retroativamente para todos os comandos que ainda não foram gravados.bash_history
.Você pode simplesmente excluir o histórico de uma sessão de terminal específica, adicionando o comando
history -cw
após o trabalho.Não feche o terminal antes de dar este comando.
fonte
shopt -uo history
deve fazer melhor.Nuking as
HISTFILE
variáveis (et al) não impedirá o Upregistro do seu histórico, apenas não o empurrará para o disco. Isso pode ou não ser positivo para você, mas, como você mencionou, acho que você quer algo melhor. Alterar ashopt
configuração do histórico impede que todo o mecanismo do histórico seja acionado.Você pode ativar o logon novamente com
shopt -so history
(-s
e-u
são definidos e desativados, respectivamente).Observe que o próprio comando provavelmente será registrado, portanto, acrescente um espaço para impedir que ele seja adicionado ao histórico antes de limpar a variável.
fonte
Outra maneira de eliminar o shell atual sem fazer logon no arquivo de histórico é:
Isso faz com que o bash (e provavelmente outras conchas também) envie o sinal SIGKILL para si mesmo, matando-o no local e impedindo que ele grave qualquer coisa no disco.
fonte
Para desabilitar temporariamente o histórico de comandos da sessão atual, você pode desabilitar temporariamente a variável de ambiente HISTFILE.
enquanto a sessão estiver ativa, você poderá acessar o histórico como de costume, mas ele não será salvo no disco.
Para reverter na mesma sessão (todas as alterações serão registradas)
fonte
HISTFILE
novamente na sessão atual? Se você desfazer a alteração (mesmo depois de executar os comandos secretos), eles serão armazenados no histórico quando você sair.Você pode modificar as linhas do histórico na sessão atual do shell. Se você voltar ao histórico (por exemplo, com Upou Ctrl+ P) e alterar uma linha sem executá-la , somente a versão modificada da linha será salva. Você pode modificá-lo da maneira que quiser; boas escolhas incluem usar Ctrl+ Upara deixar a linha totalmente em branco ou usar Esc#para colocar um
#
caractere de comentário no início.Para deixar para trás uma linha sem executá-la, lembre-se de não pressionar Return( Enter). O que faço é retornar à mais nova linha da história via Esc>.
(Em vez de Escseguido por >, na maioria dos terminais, você pode segurar Alte pressionar >; o mesmo vale para a Esc#sugestão acima.)
Nota: Você não pode modificar permanentemente as entradas das sessões anteriores dessa maneira. Essas alterações não serão aplicadas
HISTFILE
no final da sessão.fonte
Você também pode tornar .bash_history somente leitura. Eu esvaziaria o arquivo primeiro e depois faria:
fonte
Você pode executar os comandos sensíveis em uma sessão da tela e destruir a sessão quando terminar.
Como alternativa, você pode manter a sessão da tela ativa, mas desanexada, e acessá-la somente quando você realmente deseja ativar a seta para os comandos de outra forma perigosos.
fonte
Pessoalmente, eu uso
mksh
, e esse shell por padrão não tem arquivo de histórico. Isso significa que você pode iniciar um shell alternativo comomksh
ordash
(que vem por padrão) para executar o comando que você não quer que os usuários vejam e sair depois que terminar.bash
o histórico registrará apenas que você lançou o shell alternativo e é isso.fonte
Você também pode usar multiplexer terminal, como
tmux
,screen
. Portanto, o históricotmux
ou ascreen
história não seriam salvos.fonte