Опция -s
для встроенной -утилиты read
не является стандартной опцией и вряд ли будет реализована в sh
. Точно так же параметр -p
для выдачи пользовательского приглашения вряд ли будет реализован универсальным sh
.
Вместо этого запустите свой скрипт с bash
, чей read
поддерживает -s
для чтения с терминала без повторения введенного -в символах (, а также-p
).Самый простой способ сделать это — изменить строку#!
-так, чтобы она указывала на исполняемый файл bash
в вашей системе.
В оболочке, отличной от -bash
, вы можете получить аналогичный эффект с помощью
printf 'Enter password: ' >&2
stty -echo
read password
stty echo
В оболочке tcsh
bindkey -v
устанавливает режим редактирования командной строки в «режим Vi» (, а не в «режим Emacs» ).
В оболочке bash
тот же эффект можно получить с помощью set -o vi
.
Перевод редактора командной строки в «режим Vi» приводит к тому, что он ведет себя немного так, как если бы вы использовали редактор Vi, гдеw
(в «обычном режиме» после нажатия Esc)переходит к первому символ следующего слова, b
переход к первому символу текущего или предыдущего слова, конец e
переход к следующему концу -слова -и т. д.
Вы также можете переключить библиотеку Readline (, которую bash
bash использует для редактирования командной строки ), в «режим Vi», добавив параметр set editing-mode vi
в файл ~/.inputrc
. Это дополнительно повлияет на любую другую программу , использующую библиотеку Readline для редактирования командной строки (, например, на некоторые клиенты базы данных в интерактивном режиме ).