Celé napsané heslo můžete smazat pomocí Ctrl +U .
Na rozdíl od bash
, ssh
výzva k zadání hesla nepoužívá žádnou speciální knihovnu pro terminálové vstupy, jako je readline
. Funkce pro úpravu řádků jsou pouze základní funkce pro úpravu řádků POSIX TTY.
Takže máte POSIX TTY v "vařeném" režimu (ne raw), neboli kanonickém režimu, a jediná editace řádku, která je k dispozici, je to, co poskytuje jádro. Viz stty(1)
a všimněte si toho
kill = ^U
. Zde je také definován znak backspace (erase = ^?
). Vymazání slov (^W
) se hodí, když nepíšete slepě.
lnext = ^V
znamená, že můžete napsat control-v a pak cokoli (včetně control-c), abyste získali doslovný control-c.
Chcete-li odladit to, o co jste se pokoušeli naslepo, spusťte cat
nebo cat > /dev/null
ve vašem terminálu . Zadejte text a zjistěte, co funguje a co ne, abyste to mohli upravit.
readline
(používá bash
) čte nezpracovaný znak a provádí úpravy řádku v uživatelském prostoru. Jeho výchozí vazby jsou však kompatibilní s výchozími řídicími znaky TTY pro podmnožinu funkcí úprav, které obě poskytují.
readline jde daleko za jednoduchou editaci řádků prostého TTY. (např. TTY může mazat pouze znaky na konci řádku, takže zde není ^a
a delete
nebo šipka doleva/doprava)
Když bash
spustí příkaz v popředí, přepne TTY nejprve do kanonického režimu (protože to je výchozí nastavení). Takže běží stty -a
(bez přesměrování) vždy uvidí svůj vlastní terminál v kanonickém režimu. Ale pokud přesměrujete vstup z nějakého jiného TTY, který má bash
běží na něm, můžete vidět, jaká nastavení terminálu byla použita bash + readline. např. stty -a < /dev/pts/12
zobrazuje -icanon
pro raw režim, protože mám bash
běžící na tom terminálu. (Přepnul jsem na jinou kartu a spustil tty
, pak použil cestu k souboru zařízení z prvního terminálu). Pokud jsem spustil cat
v tom druhém terminálu bych viděl icanon
pro kanonický režim.
Související:The TTY demystiified
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface