Leia a senha do teclado em vez de stdin

4

Eu tenho um script zsh que solicita a entrada do teclado:

read -rs 'pw?Password: '

Este script também precisa ler o conteúdo de um arquivo de stdin. Mas o comando read pega a primeira linha de stdin e a usa como entrada para a senha:

myscript <<< 'line1\nline2'    # pw == 'line1'

Qualquer maneira de contornar isso? Eu preferiria uma solução zsh ou bash , embora eu também esteja aberto aos outros.

(FWIW, gpg2 faz isso, então eu sei que é possível ... só não sei como).

    
por Daniel Li 21.05.2017 / 06:12

1 resposta

3

O terminal está sempre acessível através de /dev/tty , independentemente de onde a entrada padrão foi redirecionada.

read -rs 'pw?Password: ' </dev/tty
    
por 22.05.2017 / 01:28