为什么我在终端上看到转义字符?

Why do I see escaped characters on the terminal?

通常 CTRL-CCTRL-D 退出一个程序。然而,有时按 CTRL-C 并没有退出程序,只是转义字符并将其输出到终端屏幕。对于不同的程序,我已经多次看到这种情况发生:Django、ssh 等。我注意到这种情况发生在我离开终端很长一段时间后。

这是我所说的转义 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/