Existe uma maneira de ocultar um único argumento passado para o terminal, mas ainda assim passar o argumento para o comando?
Esta questão aborda o problema de passar uma senha em texto simples através do shell.
Mas, mesmo que não seja uma senha, é possível ocultar argumentos seletivos do histórico da CLI, incluindo informações pessoais que podem ser usadas no LDAP (exceto senhas).
Então, existe algo assim:
comando :
program argument1 argument2 {{argument3}} argument4
história :
program argument1 argument2 {{}} argument4
... como tal, argument3
passaria para o program
, mas apareceria como {{}}
na história do BASH?
Reformulado, podemos sinalizar um argumento específico para redação em linha?
Se isso não for possível, existe uma RFC explicando por que não deveria ser?
No bash você definiria
Por exemplo, o seguinte excluirá
fortune
do histórico, mas armazenaráfortune -l
:fonte
Não acho que o Bash tenha um recurso para ocultar um único argumento de linha de comando. Parece um caso bastante restrito, e considerando como quase todos os caracteres especiais já têm alguma utilidade (seja no shell ou em ferramentas executadas a partir do shell), também seria difícil escolher uma sintaxe para ele.
Mas o Bash tem o recurso de excluir comandos inteiros começando com um espaço do histórico. Não é exatamente isso que você está perguntando, mas pelo menos o espaço é mais fácil de digitar. Você pode ativar isso definindo
HISTCONTROL=ignorespace
, ouHISTCONTROL=ignoreboth
. (Parece que estouignoreboth
ativado na maioria dos sistemas que uso, mas não tenho certeza se geralmente está ativado por padrão.)Ou você pode usar o mecanismo de exclusão mais geral e definir
HISTIGNORE=" *"
como emulateignorespace
ou criar algum padrão que corresponda ao comando específico usado para excluí-lo, independentemente do espaço.Dito isso, se você tende a passar dados confidenciais em argumentos de linha de comando, pode ser uma boa ideia simplesmente não armazenar o histórico de comandos em um arquivo (
unset HISTFILE
). Caso contrário, você corre o risco de esquecer de marcar o comando/arg para exclusão. Além disso, a linha de comando de um processo em execução geralmente fica visível para todos os usuários do sistema, o que deve ser igualmente um problema para quaisquer outros dados confidenciais além de senhas, embora, é claro, existam outras maneiras de limitar esse problema.