当 CTRL+C 时删除 ^C

当 CTRL+C 时删除 ^C

^C当您在 Red Hat Enterprise Linux 6(“Santiago”)的 shell 中点击CTRL+时,有什么方法可以删除它吗?C我有权编辑我自己的.bash_profile.

答案1

编辑(或创建)您的~/.inputrc文件。添加一行说

set echo-control-characters Off

这将指示 GNU Readline 库(Bash 使用的)不要向屏幕输出(回显)任何控制字符。此后,该设置将在所有新的 Bash 会话中(以及使用 Readline 库的任何其他实用程序中)处于活动状态。

请注意如果你的 Unix 系统附带了 Readline 库的系统范围配置文件(通常/etc/inputrc),那么你的个人配置文件将需要包含该文件:

$include /etc/inputrc
set echo-control-characters Off

另一种选择是制作系统范围配置文件的个人副本,然后对其进行修改。

答案2

请尝试以下操作:

stty -echoctl

有关解释,请参阅这篇精彩而详细的帖子来自斯蒂芬·查泽拉斯这也解释了一些其他stty功能

如果您想让该更改永久生效(并且您正在bash按照问题中的暗示使用),那么最好将其放入您的.bashrc注释中吉林格在评论中(因此它适用于所有交互式 shell)。

答案3

如果您正在尝试找到一种允许正常回显(包括echoctl)并且只是使信号生成字符的回显静音的配置,并且您确信它应该是可能的,因为您之前已经看到它是这样工作的......

您可能已经看到过这样的情况。但这已经不可能了,因为这次提交

提交ec5b1157f8e819c72fc93aa6d2d5117c08cdc961

打开 N_TTY 行规则中的 INTR/QUIT/SUSP 回显(例如,如果设置了 stty echoctl 并且 ctrl-C 设置为 INTR,则 ctrl-C 将显示为“^C”)。

Linux 似乎是唯一一个类似 UNIX 的操作系统(最近我在 Solaris、BSD 和 Mac OS X 上验证了这一点)不是这样做,我真的很怀念这个在控制台或 xterm 中对程序中断的良好视觉确认。我对多年来使用过的许多 Unix 都记得这一点。将其引入 Linux 似乎也是一种使其更符合标准类 UNIX 行为的好方法。

如果你还记得 Linux 过去的样子不是echo that ^C,恢复旧行为的唯一方法是修补内核。在最近的版本中,信号生成字符的回显位于第 1215-1218 行驱动程序/tty/n_tty.c

相关内容