Как отобразить значок пользовательского ключа на Terminal.app?
При отправке запроса POST на сервер, который требует аутентификации пользователя и пароля, Terminal.app отображает мигающий значок ключа, который, я считаю, не является Unicode.
Когда я просил пользователя ввести разумную информацию в моем собственном сценарии, я мог проверить, TERM_PROGRAM является Apple_Terminal, но я не знаю, как отобразить мигающий значок.
1 ответ
Изображение "ключа" - это не символьный символ, это пользовательская форма курсора, которую рисует терминал.
Терминал отображает эту специальную форму курсора всякий раз, когда кажется, что пользователя просят ввести пароль или аналогичные конфиденциальные данные. В дополнение к отображению этого курсора он ограничивает клавиатуру римскими методами ввода, чтобы избежать непреднамеренного отображения методом ввода конфиденциальной информации в виде встроенного текста или в другом окне. Это ведет себя как стандартное текстовое поле пароля OS X.
Терминал входит в этот режим, когда видит, что устройство TTY настроено на канонический (он же "приготовленный") режим и эхо-символы отключены. В этой конфигурации ввод пользователя не отображается, и только буфер ввода устройства TTY будет видеть символы, пока вы не введете Return, чтобы отправить его в прикладную программу. Это гарантирует, что ни устройство TTY, ни прикладная программа не смогут отображать пользовательский ввод при вводе текста, поэтому эта конфигурация обычно используется только для чтения конфиденциальной информации.
Вы можете увидеть это в действии в Bash, запустив
stty -echo && echo Tell me your secrets: && cat; stty echo
stty -echo отключает эхо-символ TTY, и когда Bash запускает команду, он включает канонический режим, поэтому следующее cat Команда будет работать в режиме "пароль". cat будет отображать каждую строку ввода, пока вы не нажмете Control-D.stty echo снова включается после cat выходы.
Обратите внимание, что сценарий оболочки может просто использовать read -s читать с TTY в этом режиме, например,
while read -sp 'Tell me your secrets: '; do echo; echo $REPLY | vis; done
