Как я повторяю звезды (*) при чтении пароля с 'чтением'?

Что я должен сделать для кода в Bash, если я хочу отозваться эхом *s вместо символов пароля (или даже просто скрывают символы полностью), когда пользователь вводит что-то в использовании read?

37
задан Bad Wolf 12 September 2013 в 18:01
поделиться

4 ответа

Как указал Марк Рушаков , read -s подавит эхо символов, вводимых в командной строке. Вы можете использовать эту функцию как часть этого скрипта, чтобы отображать звездочки для каждого набранного символа:

#!/bin/bash
unset password
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
    if [[ $char == $'\0' ]]
    then
        break
    fi
    prompt='*'
    password+="$char"
done
echo
echo "Done. Password=$password"
58
ответ дан 27 November 2019 в 04:14
поделиться

read -s должен перевести его в режим без звука:

-s     Silent mode.  If input is coming from a terminal, characters are not echoed.

См. Раздел read в man bash .

12
ответ дан 27 November 2019 в 04:14
поделиться
stty -echo
read something
stty echo

остановит отображение пользовательского ввода на экране для этого чтения. В зависимости от того, что вы делаете с подсказками, вы можете добавить дополнительную команду echo для создания новой строки после чтения.

2
ответ дан 27 November 2019 в 04:14
поделиться

Я не знаю насчет звезд, но stty -echo - ваш друг:

 #!/bin/sh 
 read -p "Username: " uname 
 stty -echo 
 read -p "Password: " passw; echo 
 stty echo

Источник: http://www.peterbe.com/plog/passwords-with- bash

5
ответ дан 27 November 2019 в 04:14
поделиться