Você deve usar o comando stty
:
stty -echo
Para reativar o eco da entrada do terminal:
stty echo
Atualizado como original não estava claro.
Estou configurando o postfix em um computador para trabalhar com o SMTP do meu e-mail.
Eu não quero inserir minhas credenciais em texto sem formatação, especialmente ao digitar em público.
É possível fazer bash não mostrar minha entrada para um comando ou dois?
Exemplo: Eu estou inserindo uma série de comandos e, em seguida, quero ecoar um nome de usuário e senha em um arquivo de configuração.
Eu gostaria de ir rapidamente para um modo em que a minha entrada não é mostrada na tela, então facilmente deixar esse modo com ctl+c
.
No bash: read é o comando e a opção relevante é (from man bash):
-s Silent mode. If input is coming from a terminal, characters are not echoed.
#!/bin/bash
unset password
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'#!/bin/bash
unset password
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'%pre%' ]]
then
break
fi
prompt='*'
password+="$char"
done
echo
echo "Done. Password=$password"
' ]]
then
break
fi
prompt='*'
password+="$char"
done
echo
echo "Done. Password=$password"
Mas é melhor não repetir nada, já que o uso de asteriscos permite que outras pessoas vejam o tamanho da senha.