如何禁用 ^C 在 Linux 上的 Ctrl-C 回显

pts*_*pts 6 linux terminal signal kernel

当我在 Karmic Koala 的任何伪终端(xterm、gnome-terminal、rxvt、文本控制台和 SSH)中按 Ctrl- C时,该字符串^C会被回显到 Ubuntu Karmic Koala 的终端。这在 Ubuntu Jaunty Jackalope 中没有发生。我想摆脱额外的^C. 例子:

$ cat
foo
foo
^C
$ _
Run Code Online (Sandbox Code Playgroud)

我通过键入CATEnterFOOEnter、 Ctrl- C得到了上述内容。我想摆脱^C, 并为相同的按键获得这个:

$ cat
foo
foo

$ _
Run Code Online (Sandbox Code Playgroud)

我尝试了 setting stty -echoctl,它解决了 SSH 之外的 rxvt 和 xterm 问题,但它在HT从 Ubuntu Hardy 系统进行SSH 连接时创建了一个单字符,并且它创建了一个带有 Unicode 的框,0003而不是^C在 gnome-terminal 中。当我按下 Ctrl- C时,我绝对不想看到任何东西。我正在使用

Linux linux 2.6.31-20-generic-pae #57-Ubuntu SMP Mon Feb 8 10:23:59 UTC 2010 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我在所有系统和所有终端仿真器中都有这些终端设置:

ioctl(0, TCGETS, {c_iflags=0x2502, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"})
Run Code Online (Sandbox Code Playgroud)

Den*_*son 8

这样做并记录结果:

stty -a
Run Code Online (Sandbox Code Playgroud)

然后尝试:

stty sane
stty -echoctl
Run Code Online (Sandbox Code Playgroud)

然后,如果 Ctrl-C 以您期望的方式工作:

stty -a
Run Code Online (Sandbox Code Playgroud)

并将结果与​​您在上面记录的结果进行比较。

编辑:

这已作为针对gnome-terminal的错误提交。您可以使用printf '\003\n'. PuTTY 和 xterm 显示一个空行,但 gnome-terminal 显示一个 Unicode 框。