Як відобразити спеціальну піктограму ключа на Terminal.app?


3

Під час надсилання запиту POST на сервер, для якого потрібна автентифікація користувача та пароля, Terminal.app відображає миготливий значок ключа, який, на мою думку , не є Unicode.

Введіть пароль хоста для користувача 'bucaran'

Коли я просив користувача ввести розумну інформацію в моєму власному сценарії, я міг перевірити, чи TERM_PROGRAMє це Apple_Terminal, але я не знаю, як відобразити миготливий значок.

Відповіді:


8

"Ключове" зображення не є символом гліфом, це спеціальна форма курсору, яку Термінал малює.

Термінал відображає цю спеціальну форму курсора кожного разу, коли схоже на те, що користувача просять ввести пароль або подібні конфіденційні дані. Окрім відображення цього курсору, він обмежує клавіатуру римськими методами введення, щоб уникнути випадкового відображення чутливої ​​інформації у вигляді вбудованого тексту або в іншому вікні методом введення. Це поводиться як стандартне текстове поле пароля 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

Це саме те, що я шукав. Дякую.
Хорхе Букаран

Як Термінал виявляє зміну параметрів терміналу (режим готування, відлуння символів тощо)? Чи існує API для цього або він періодично запитує чи що?
fumoboy007

@ fumoboy007 Я пропоную вам поставити це як питання.
Кріс Пейдж

@ChrisPage Опубліковано: superuser.com/q/1143568/230880
fumoboy007
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.