Excluindo alguns dos comandos de serem armazenados no histórico do bash


31

Existe alguma maneira de excluir comandos como rm -rf, svn revertde ser ficando armazenados na história bash? Na verdade, eu, por engano, os emiti várias vezes, embora não tenha intenção de fazê-lo, apenas porque estou fazendo as coisas rapidamente e isso aconteceu. Daí resulta a perda de muito trabalho que fiz até agora.


3
Você pode estar interessado em serverfault.com/questions/48769/…
Luc M

Respostas:


53

Você pode querer $HISTIGNORE: "Uma lista de padrões separados por dois pontos usados ​​para decidir quais linhas de comando devem ser salvas na lista de histórico". Esta linha no seu ~ / .bashrc deve fazer o trabalho:

HISTIGNORE='rm *:svn revert*'

Além disso, você pode adicionar um espaço no início de um comando para excluí-lo do histórico. Isso funciona desde que $HISTCONTROLcontenha ignorespaceor ignoreboth, que é o padrão em qualquer distribuição que eu usei.


4
o espaço é como sempre o fiz.
23412 Rob

Eu costumava inserir acidentalmente adicional y, afinal cp(alias para cp -i) superar. Então, eu fiz um alias ycomo alias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'... Mas HISTIGNOREé o melhor método que parece. :) Obrigado.
Anishsane

2
Apenas para ser mais explícito: você pode adicionar export HISTCONTROL="ignorespace"ao seu ~/.bashrcpara ignorar comandos que começam com espaços.
Aidan Feldman

@AidanFeldman não é padrão no macOS
akauppi 12/17

NOTA: o espaço deve ser incluído quando digitarmos a linha de comando e não HISTIGNORE.
Gayan Weerakutti 27/03

6

Embora seja um pouco diferente da pergunta do OP, quando intencionalmente não quero que um comando seja armazenado no histórico do bash, prefixo-os com um espaço. Funciona no Ubuntu e suas variantes, não tenho certeza se funciona em todos os sistemas.


6
Depende $HISTCONTROL(veja minha resposta).
L0b0

@ l0b0 certo, obrigado por apontar.
K4rtik

1

Normalmente, eu mato minha instância do bash quando faço coisas que não quero na história.

kill -9 $$

$$ representa o processo atual - bash quando você o executa a partir do shell. Você pode usar $ BASHPID, mas é mais digitação :-)


2
Algumas configurações do Bash (como esta ) salvarão o histórico após cada comando e, nesse caso, isso não funcionará.
L0b0

11
Eu costumava fazer isso. mas a configuração HISTFILE=/dev/nullé uma opção melhor.
anishsane

simplesmente HISTFILE=funciona no bash e no ksh.
Kubanczyk

ouunset HISTFILE
Todd Walton
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.