web-dev-qa-db-fra.com

Comment désactiver l'écho dans un terminal?

J'écris un script Bourne Shell et je saisis un mot de passe comme ceci:

echo -n 'Password: '
read password

Évidemment, je ne veux pas que le mot de passe soit répercuté sur le terminal, je souhaite donc désactiver l'écho pour la durée de la lecture. Je sais qu'il est possible de faire cela avec stty, mais je poserai la question pour le bénéfice de la communauté pendant que je lirai la page de manuel. ;)

15
Josh Glover
stty_orig=`stty -g`
stty -echo
echo 'hidden section'
stty $stty_orig
36
Sandro Munda

read -s password fonctionne sur ma boîte Linux.

12
Rumple Stiltskin

Vous pouvez utiliser l’option '-s' de read command pour masquer la saisie de l’utilisateur.

echo -n "Password:"
read -s password
if [ $password != "..." ]
then
        exit 1; # exit as password mismatched #
fi

Vous pouvez aussi utiliser 'ssty -echo' si vous voulez vous cacher du terminal pour imprimer. Et restaurez les paramètres du terminal en utilisant "ssty echo"

Mais je pense que pour obtenir le mot de passe de l'utilisateur 'read -s password' est largement suffisant.

2
PravinY

Bourne Shell Script:

#!/bin/sh

# Prompt user for Password
echo -n 'Password: '

# Do not show what is being typed in console by user
stty -echo

# Get input from user and assign input to variable password
read password

# Show what is being typed in console
stty echo

commande manuelle stty pour plus d'informations:

@:/dir #man stty

Extraits manuels stty:

 STTY(1)              stty 5.2.1 (March 2004)              STTY(1)

     NAME
          stty - change and print terminal line settings

     SYNOPSIS
          stty [-F DEVICE] [--file=DEVICE] [SETTING]...
          stty [-F DEVICE] [--file=DEVICE] [-a|--all]
          stty [-F DEVICE] [--file=DEVICE] [-g|--save]

     DESCRIPTION
          Print or change terminal characteristics.

          -a, --all
               print all current settings in human-readable form

          -g, --save
               print all current settings in a stty-readable form

          -F, --file=DEVICE
               open and use the specified DEVICE instead of stdin

          --help
               display this help and exit

          --version
               output version information and exit

          Optional - before SETTING indicates negation.  An * marks
          non-POSIX settings.  The underlying system defines which
          settings are available.



   Local settings:

          [-]echo
               echo input characters
0
javaPlease42