Ocultar entrada para um comando [duplicado]

4

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 .

    
por Philip Kirkbride 09.10.2017 / 16:01

2 respostas

3

Você deve usar o comando stty :

stty -echo

Para reativar o eco da entrada do terminal:

stty echo
    
por 09.10.2017 / 21:45
2

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.

    
por 09.10.2017 / 16:14

Tags