CTRL + C时删除^ C


25

在Red Hat Enterprise Linux 6(“圣地亚哥”)附带的外壳中按+ ^C时,有什么方法可以删除?我有权编辑自己的。CTRLC.bash_profile


4
试试set echo-control-characters off
Sundeep

1
我尝试了一下,但没有成功
Fede Gold

Answers:


29

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

set echo-control-characters Off

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

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

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

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


嗨,我测试这和它的工作很好,但是当我中断运行bash命令,它没有工作,例如sleep 180,按CTRL + C
rɑːdʒɑ

@ Ten-Coin仅在命令不幸使用Readline库的情况下才起作用。
库萨兰达

1
如果~/.inputrc尚不存在,则仅创建文件可能会丢失一些现有设置。就我而言,我首先注意到ctrl + left和ctrl + right已停止工作。解决方法是~/.inputrc从这行开始$include /etc/inputrc。也可以cp /etc/inputrc .inputrc根据需要进行调整和编辑。
卡巴斯德(Kasperd)

2
@kasperd好点!我不知道添加个人配置文件会禁止读取系统范围的配置文件(我的系统没有该文件)。我将更新我的答案。
库萨兰达

20

请尝试以下操作:

stty -echoctl

有关说明,请参见StéphaneChazelas的这篇精彩而详尽的文章,其中还介绍了其他一些功能stty

如果您想永久保留该更改(并且您正bash按照问题所暗示的方式使用),则最好.bashrc按照注释中jlmg的说明放入您的更改中(因此它适用于所有交互式shell)。


+1与readline解决方案相反,这对于大多数(即使不是全部)在终端中运行的事物也适用。
JoL

1
可能应该提到的是,如果.bash_profile仅通过登录shell解析该文件,则不能在所有终端上使用。应该将其放入.bashrc,以便所有交互式调用都可以读取。
JoL

1
这是否还会回显原始的0x03字节,理论上某些终端可以解释该字节?如果您执行诸如非读行命令之类的操作,这也会产生副作用,按箭头键会在屏幕上移动光标,而不是显示光标^[[A
Random832 '16

1
@ Random832 +1您是对的。我猜这个设置的名字不好用。它不控制控制字符的回显,而是控制它们在回显之前转换为可打印字符。为了避免这种副作用,您也必须stty -echo这样做。当然,这也将防止其他所有内容的回显,如果您只想隐藏^Cs,则可能使此答案不成立。
JoL

1
@jlmg如果^C总是结尾,我可能会同意你的看法。但是^C将在光标所在的位置打印,这会覆盖命令中任意位置的一对字符。这意味着,如果您需要复制粘贴该命令的某些部分,则可能会遇到一些麻烦。而且,^C在查看终端时,不像在命令末尾那样容易识别。
卡巴斯德(Kasperd)'17年

2

如果您试图找到一种允许正常回声(包括echoctl)并且仅使信号生成字符回声静音的配置,那么您肯定有可能这样做,因为您之前已经看到过这种工作方式...

您可能已经看到了。但是由于这个提交,它不再可能:

提交ec5b1157f8e819c72fc93aa6d2d5117c08cdc961

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

Linux似乎是唯一没有这种行为的类似Unix的OS(最近我已经在Solaris,BSD和Mac OS X上对此进行了验证),我真的很想念它,因为它很好地直观地确认了程序的中断在控制台或xterm中。我也多年以来使用过的许多Unix都对此深有感触。将其带入Linux似乎也是使其更符合标准Unix行为的好方法。

如果您还记得Linux是如何回声的^C,那么使旧行为恢复原状的唯一方法是修补内核。在最新版本中,信号产生字符的回显在driver / tty / n_tty.c的第1215-1218行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.