Как отключить эхо в терминале? - PullRequest
15 голосов
/ 12 апреля 2011

Я пишу сценарий оболочки Bourne и у меня вводится пароль вроде этого:

echo -n 'Password: '
read password

Очевидно, я не хочу, чтобы пароль выводился на терминал, поэтому я хочу отключить эхона время чтения.Я знаю, что есть способ сделать это с stty, но я задам вопрос на благо сообщества, пока иду читать справочную страницу.;)

Ответы [ 4 ]

39 голосов
/ 12 апреля 2011
stty_orig=`stty -g`
stty -echo
echo 'hidden section'
stty $stty_orig
13 голосов
/ 12 апреля 2011

read -s password работает на моем linux box.

2 голосов
/ 08 августа 2016

Вы можете использовать параметр '- s' команды чтения , чтобы скрыть пользовательский ввод.

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

Также вы можете использовать 'stty -echo' , если хотите скрыться от терминала до печати. И восстановите настройки терминала, используя "stty echo"

Но я думаю, что для ввода пароля от пользователя 'read -s password' более чем достаточно.

0 голосов
/ 25 июня 2015

Скрипт Bourne Shell:

#!/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

stty ручная команда для получения дополнительной информации:

@:/dir #man stty

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
...