为什么我在终端上看到转义字符?
Why do I see escaped characters on the terminal?
通常 CTRL-C
或 CTRL-D
退出一个程序。然而,有时按 CTRL-C
并没有退出程序,只是转义字符并将其输出到终端屏幕。对于不同的程序,我已经多次看到这种情况发生:Django、ssh 等。我注意到这种情况发生在我离开终端很长一段时间后。
- 有没有办法将
CTRL-C
行为恢复到我期望的状态?
- 转义字符背后的原因是什么?
这是我所说的转义 CTRL-C
和其他字符的输出示例:
^C^C^D^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^D^D^D^ D^D^D^D^D^D^D^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^ D^D^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^ C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^ C^C^C^C^C^C^C^C^C^C^C^C^C^D^D^D^D^D^D^D^D^D^D^D^D^D^ D^D^[^[^D^D^D^D^Z^Z^Z^Z^Z^Z
这是因为与服务器的连接可能已断开,所以您的终端只是回显您所做的事情,而不是能够向您显示命令或服务器正在响应的内容。退出 ssh 的方法是使用终止序列 ~ + . + Enter
。可能并不总是需要输入
下面是 SSH 转义序列列表
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - Request rekey (SSH protocol 2 only)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
PS:取自https://lonesysadmin.net/2011/11/08/ssh-escape-sequences-aka-kill-dead-ssh-sessions/
通常 CTRL-C
或 CTRL-D
退出一个程序。然而,有时按 CTRL-C
并没有退出程序,只是转义字符并将其输出到终端屏幕。对于不同的程序,我已经多次看到这种情况发生:Django、ssh 等。我注意到这种情况发生在我离开终端很长一段时间后。
- 有没有办法将
CTRL-C
行为恢复到我期望的状态? - 转义字符背后的原因是什么?
这是我所说的转义 CTRL-C
和其他字符的输出示例:
^C^C^D^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^D^D^D^ D^D^D^D^D^D^D^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^Z^ Z^Z^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^D^ D^D^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^ C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^ C^C^C^C^C^C^C^C^C^C^C^C^C^D^D^D^D^D^D^D^D^D^D^D^D^D^ D^D^[^[^D^D^D^D^Z^Z^Z^Z^Z^Z
这是因为与服务器的连接可能已断开,所以您的终端只是回显您所做的事情,而不是能够向您显示命令或服务器正在响应的内容。退出 ssh 的方法是使用终止序列 ~ + . + Enter
。可能并不总是需要输入
下面是 SSH 转义序列列表
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - Request rekey (SSH protocol 2 only)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
PS:取自https://lonesysadmin.net/2011/11/08/ssh-escape-sequences-aka-kill-dead-ssh-sessions/