Что я должен сделать для кода в Bash, если я хочу отозваться эхом *
s вместо символов пароля (или даже просто скрывают символы полностью), когда пользователь вводит что-то в использовании read
?
Как указал Марк Рушаков , 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"
read -s
должен перевести его в режим без звука:
-s Silent mode. If input is coming from a terminal, characters are not echoed.
См. Раздел read
в man bash
.
stty -echo
read something
stty echo
остановит отображение пользовательского ввода на экране для этого чтения. В зависимости от того, что вы делаете с подсказками, вы можете добавить дополнительную команду echo
для создания новой строки после чтения.
Я не знаю насчет звезд, но stty -echo - ваш друг:
#!/bin/sh
read -p "Username: " uname
stty -echo
read -p "Password: " passw; echo
stty echo