Yanıtlar:
read_password() {
REPLY="$(
# always read from the tty even when redirected:
exec < /dev/tty || exit # || exit only needed for bash
# save current tty settings:
tty_settings=$(stty -g) || exit
# schedule restore of the settings on exit of that subshell
# or on receiving SIGINT or SIGTERM:
trap 'stty "$tty_settings"' EXIT INT TERM
# disable terminal local echo
stty -echo || exit
# prompt on tty
printf "Password: " > /dev/tty
# read password as one line, record exit status
IFS= read -r password; ret=$?
# display a newline to visually acknowledge the entered password
echo > /dev/tty
# return the password for $REPLY
printf '%s\n' "$password"
exit "$ret"
)"
}
Yerleşik printf
olmayan mermiler (mksh) için, parola ps
çıktıda (birkaç mikrosaniye için) net görünecek veya parametreleriyle birlikte tüm komut çağrıları denetlenirse bazı denetim günlüklerinde görünebilir.
cat
+ heredoc için daha güvenli bir alternatif olabilir printf
?
stty
ayarların nasıl kaydedileceğini ve geri yükleneceğini gösterdiğiniz için teşekkür ederiz .
read -s
POSIX'te değil. POSIX uyumlu olmak istiyorsanız stty -echo
. stty
ve echo
parametresi POSIX'te tanımlanmıştır.
#!/bin/bash
stty -echo
printf "Password: "
read PASSWORD
stty echo
printf "\n"
Bu, POSIX'e uyan tüm mermilerde çalışacaktır.
stty echo
durumda kullanıcı karışır ve hit kontrol-C sırasında - geri read PASSWORD
bölümünde .