На відміну від bash
, ssh
у запиті пароля не використовується жодна спеціальна бібліотека терміналів-входів, як readline
. Особливості редагування рядків - це лише основні функції редагування ліній POSIX TTY.
Отже, у вас є POSIX TTY в режимі "приготування" (не сировинному), так само канонічному режимі, і єдине доступне редагування рядків - це те, що надається ядром. Дивіться stty(1)
, і помічайте це
kill = ^U
. Тут також визначено символ зворотної області ( erase = ^?
). Word-стирання ( ^W
) зручно, коли ви не набираєте сліпого.
lnext = ^V
означає, що ви можете набрати control-v, тоді все, що завгодно (включаючи control-c), щоб отримати буквальний контроль-c.
Щоб налагодити те, що ви намагалися зробити наосліп, запустіть cat
або cat > /dev/null
у своєму терміналі . Введіть матеріал, а потім подивіться, що працює, а що не потрібно редагувати.
readline
(використовується bash
) читає необроблений символ і робить редагування рядків у просторі користувача. Його прив'язки за замовчуванням сумісні з типовими символами керування TTY за замовчуванням для підмножини функцій редагування, які вони обидва надають.
readline виходить за рамки простого редагування рядків звичайного TTY. (наприклад, TTY може видаляти символи лише в кінці рядка, тому немає ^a
та delete
/ або стрілка вліво / вправо)
Коли bash
команда виконує на передньому плані, вона спочатку переводить TTY в канонічний режим (тому що це за замовчуванням). Тож запущений stty -a
(без перенаправлення) завжди буде бачити власний термінал у канонічному режимі. Але якщо ви переспрямовуєте вхід з якогось іншого TTY, який bash
працює на ньому, ви можете бачити, які налаштування терміналу застосовано bash + readline. наприклад, stty -a < /dev/pts/12
показує -icanon
для необробленого режиму, тому що я bash
працюю на цьому терміналі. (Я перейшов на іншу вкладку і побіг tty
, потім використав цей шлях до файлу пристрою з першого терміналу). Якби я побіг cat
у тому іншому терміналі, я побачив би icanon
канонічний режим.
Пов'язане: TTY демістифікований
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface