bug*_*nny 105 linux terminal keyboard-shortcuts passwords
有没有办法删除我在 Linux 中隐藏密码提示中输入的所有字符?例如,当我通过 SSH 连接到服务器时,它会在未显示输入的密钥的情况下询问我的密码:
$ ssh root@somehost
root@somehost's password:
Run Code Online (Sandbox Code Playgroud)
有没有办法删除我输入的所有文本而不必按退格键未知的时间?当我认为我输入了错误的内容时,我想重新开始并按退格键几秒钟很烦人。我试过Esc,CtrlA希望选择整个文本和Home. CtrlC取消整个命令,我必须再次发送命令才能重试。这几乎是最好和最快的解决方案,但仍然不能令人满意。Insert 在我的 shell 中也不起作用。
Ipo*_*cer 162
您可以使用Ctrl+删除整个输入的密码U。
Pet*_*des 14
与 不同bash
,ssh
的密码提示不使用任何特殊的终端输入库,如readline
. 行编辑功能只是基线 POSIX TTY 行编辑功能。
所以你有一个处于“熟”模式(不是原始模式)的 POSIX TTY,也就是规范模式,唯一可用的行编辑是内核提供的。看stty(1)
,并注意
kill = ^U
。这也是定义退格字符 ( erase = ^?
) 的地方。^W
当您不盲打时,字擦除 ( ) 很方便。
lnext = ^V
意味着您可以输入 control-v 然后输入任何内容(包括 control-c)来获得文字 control-c。
要调试您试图盲目执行的操作,请运行cat
或cat > /dev/null
在您的终端中。输入内容,然后查看哪些有效,哪些无效以对其进行编辑。
readline
(由bash
)读取原始字符并在用户空间中进行行编辑。但是,它的默认绑定与默认 TTY 控制字符兼容,适用于它们都提供的编辑功能子集。
readline 远远超出了普通 TTY 的简单行编辑。(例如,TTY 只能删除行尾的字符,因此没有^a
和delete
或左/右箭头)
当bash
在前台运行的命令,它把TTY为规范模式第一(因为这是默认值)。因此运行stty -a
(没有重定向)将始终在规范模式下看到自己的终端。但是,如果您重定向来自bash
在其上运行的其他某个 TTY 的输入,您可以看到应用了哪些终端设置 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
归档时间: |
|
查看次数: |
7162 次 |
最近记录: |