Mais de uma vez, acidentalmente, executei vários comandos e poluí meu histórico do bash. Como fecho meu terminal sem salvar meu histórico do bash? Estou usando o Fedora.
bash
command-history
Michael Mrozek
fonte
fonte
set HISTFILE
próxima vez que fizer login? (apenas dizer se isso é correto ou incorreto)Resposta curta:
Digite isso no prompt:
Isso matará seu shell imediatamente, sem que ele possa fazer algo como interceptar o sinal, salvar histórico, executar
~/.bash_logout
, alertar sobre trabalhos interrompidos ou qualquer coisa boa.Resposta longa:
Nota: Essas opções não são mutuamente exclusivas; eles podem ser usados de uma só vez.
Opção 1:
Se você é um perfeccionista quando se trata de bagunçar seu arquivo de histórico, o que você pode fazer é modificar a
HISTIGNORE
variável para incluir vários comandos que você não deseja gravar. Por exemplo, se você adicionarHISTIGNORE='ls*:cd*'
à sua~/.bashrc
instância, qualquer instâncials
ecd
não será inserida no seu arquivo de histórico.Opção 2:
Se você deseja controlar, comando por comando, quais comandos são deixados de fora do seu histórico, é possível definir
HISTCONTROL='ignorespace'
quais omitirão as linhas de comando que começam com um espaço. O usoignoreboth
também omitirá as linhas repetidas. Em seguida, pressionar a barra de espaço antes de inserir um comando fará com que ele não seja exibido no seu arquivo de histórico.Opção 3:
Se você quiser fazê-lo assim que fechar o terminal, o shell sai imediatamente, você pode
trap
sinalizar que o programa do terminal envia o shell (xterm
por exemplo, enviaSIGHUP
e aguarda a saída do shell) e sair sem salvar o histórico quando recebe este sinal. Adicione isso ao seu~/.bashrc
:fonte
kill -9
para qualquer coisa, exceto situações terríveis em que tudo mais falhou.Estou surpreso ao ver que ninguém sugeriu
history -c
imediatamente antesexit
. IINM (não sou especialista) que fará bem.fonte
history -r
irá reler o arquivo do histórico, para que o salvamento se torne um não operacional.Existem duas variáveis de ambiente que o bash usa para determinar o arquivo de histórico e quantas linhas gravar nele quando o shell sair.
Você pode jogar fora o histórico da sua sessão com um destes (definido durante a sessão que deseja omitir do seu arquivo de histórico):
ou
Qualquer um desses funciona bem no Bash no Fedora
fonte
Não sei por que você se importa tanto com seu histórico de comandos. Se você precisar de determinados comandos com frequência, poderá se divertir mais se definir aliases para eles, para recuperá-los com duas teclas pressionadas, em vez de precisar procurá-los no histórico.
fonte
Eli já deu a resposta correta para o Bash, que deve ser definida
HISTSIZE=0
.Eu apenas adicionaria o método para fazê-lo na tela GNU . Pressione
Ctrl+A
(sequência de escape da tela) seguida por:scrollback 0
. Isso excluirá o histórico de rolagem para trás. Agora você pode fazer imediatamente:scrollback 15000
para redefinir o tamanho do buffer de rolagem para trás.fonte
screen(1)
?scrollback=0
.Ctrl+a H
nemCtrl+a :clear
irá remover história. Você precisaCtrl+a :scrollback 0
. Você pode testar você mesmo. Inicie uma nova sessão de tela. Agora faça umcat /etc/passwd
. Agora, execute um dos procedimentos acima -Ctrl+a H
ouCtrl+a :clear
. Agora, tente copiar do buffer de tela, donig aCtrl+a [
seguido pela seta para cima para subir e ver até onde você pode copiar. Se você fez umCtrl+a :scrollback
seguido de aclear
, você iria apenas até onde pode ver na janela atual, pois não haverá buffer de rolagem.