Como eu censuro um comando longe de .bash_history e também posso retornar a ele com a seta para cima?

1

Quando alguém adiciona um caractere de espaço ao comando, ele desaparece da história. Mas isso também faz com que o comando não seja facilmente editável e re-executável.

Como faço uma versão mais fraca do comando censurado pelo espaço que apenas desaparece da história permanente, não da memória in-memory?

                                  'command'   ' command'  I want
Saved to .bash_history:            Yes           No         No
Can uparrow, edit and re-execute:  Yes           No         Yes
    
por Vi. 25.04.2016 / 00:45

1 resposta

1

Até onde eu sei, não há esse recurso no bash.

Uma solução possível é colocar o comando em um alias ou função e omitir a definição de alias / função do histórico de comandos. Você ainda pode usar o alias / function e seus usos serão gravados no arquivo de histórico, mas a própria definição da função permanecerá apenas na memória. Por exemplo, na sessão seguinte, o comando mysql -p$(mysql_password) será gravado no arquivo de histórico, mas a senha em si não será, pois o comando alias mysql_password=… possui um espaço à esquerda.

$ HISTCONTROL=ignorespace
$  alias mysql_password=$(echo swordfish)
$ mysql -p$(mysql_password)

Se você quiser editar a definição da função, poderá imprimi-la com declare -f foo ( alias foo para um alias) e usar a saída para definir uma nova (um editor externo pode ajudar ou o shell-expand-line readline function que está vinculada a C-M-e ).

Como alternativa, alterne para zsh e defina a HISTORY_IGNORE variable . Os comandos que correspondem a esse padrão são armazenados no histórico da memória, mas não gravados no arquivo de histórico. Você não pode decidir em um comando por base de comando, mas você pode incluir um marcador como #dontstore no comando e definir HISTORY_IGNORE='\#dontstore' .

    
por 25.04.2016 / 01:21