Como evitar que o Bash altere o histórico?

24

Se eu pressionar as setas para cima ou para baixo no teclado e depois modificar algo do meu histórico, ele mudará para sempre. Mesmo que eu pressione Ctrl-C e tente trazê-lo de novo, ele ainda é alterado - eu perdi essa entrada na minha história.

Como posso evitar que isso aconteça?

    
por Mehrdad 25.06.2011 / 23:52

2 respostas

14

Você quer a configuração readline:

set revert-all-at-newline on

Você pode colocá-lo em ~/.inputrc (veja a nota abaixo) ou colocar bind 'revert-all-at-newline on' no seu ~/.bashrc .

Demo:

$ man bash
$ bind 'set revert-all-at-newline on'
$ man bsh # up arrow and edit
No manual entry for bsh
$ man bash # three up arrows

Mais detalhes estão na página de manual do Bash :

revert-all-at-newline

If set to ‘on’, Readline will undo all changes to history lines before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across calls to readline. The default is ‘off’.

Note:

If a new ~/.inputrc file is created for the purpose of setting revert-all-at-newline, be aware that bash will use the readline settings in this file instead of any settings which may be in the file /etc/inputrc. That is, any settings specified in /etc/inputrc will no longer be in effect. Therefore, if the /etc/inputrc file exists, it's a good idea to start ~/.inputrc with the line:

$include /etc/inputrc

    
por 26.06.2011 / 02:05
5

Eu entro:

ls /tmp

- maravilhoso. Agora eu não quero entrar

ls /temp 

e pode impedir que ele entre no histórico, portanto, evite que ele sobrescreva ls / tmp, se eu iniciar o comando com um espaço em branco:

 ls /temp

É difícil ver, mas se você souber ...

É controlado por

export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth

ignorados apenas ignora os comandos duplicados, ignorar ambos os espaços no início da linha, o que é útil, para ocultar as senhas que não são exibidas.

Mas talvez você esteja fora de uma solução, onde você termina com os dois comandos, o antigo não-modificado e o novo. Minha versão do bash ou configurações se comportam assim, mas eu não sei, o que é diferente do seu.

    
por 26.06.2011 / 01:49

Tags