8

How can I write Bash Code for Hiding Password Or convert into '*' user input will be in string so no spaces, and change or hide password String.

2
  • 1
    A string is a string even if it contains spaces, and passwords often contain spaces...
    – Kusalananda
    Dec 10, 2018 at 20:33
  • Oooph, tough call for me on VTC here. The target Q does have an answer that would print asterisks, as asked (in a comment) in this question, but it doesn't handle backspaces as also hinted at here. I'll VTC because it's a good duplicate otherwise, but if this question is edited to incorporate new requirements, it could become separate.
    – Jeff Schaller
    Dec 11, 2018 at 13:54

2 Answers 2

13

Use read -s to not echo the input, i.e. show nothing when the user types the password:

read -p 'Password? ' -s password
echo Your password is "$password".
5
  • instead of hiding can i convert to character *
    – AlphaCoder
    Dec 10, 2018 at 17:00
  • 2
    Not so easily. You can read -n1 and display the asterisk yourself, though.
    – choroba
    Dec 10, 2018 at 17:04
  • 1
    @choroba: I've just tested a bit, and -- it looks like using read -n1 for this has some sharply negative consequences, e.g. in that it's a lot of work to try to support backspace.
    – ruakh
    Dec 11, 2018 at 0:20
  • @AlphaCoder It is not idiomatic in Unix to display even the length of a password at the CLI. Dec 11, 2018 at 8:00
  • @ruakh: Yes, that's part of the "not so easily".
    – choroba
    Dec 11, 2018 at 16:58
11

You can use the systemd-ask-password, the password will displayed as asterisks while typing.

Format: (systemd-ask-password --help)

systemd-ask-password [OPTIONS...] MESSAGE

e,g:

PASSWORD=$(systemd-ask-password "Please type your Password:")
Please type your Password: ***********
2
  • 1
    When I try this, I get bash: systemd-ask-password: command not found . . .
    – ruakh
    Dec 11, 2018 at 0:15
  • @ruakh systemd-ask-password is a part of systemd.
    – GAD3R
    Jul 23, 2020 at 14:31

Not the answer you're looking for? Browse other questions tagged .