Answers:
编辑(或创建)您的~/.inputrc
文件。添加一行
set echo-control-characters Off
这将指示GNU Readline库(Bash使用)不向屏幕输出(回显)任何控制字符。此后,该设置将在所有新的Bash会话(以及使用Readline库的任何其他实用程序)中处于活动状态。
请注意,如果您的Unix系统附带了Readline库的系统范围的配置文件(通常是/etc/inputrc
),那么您的个人配置文件将需要包括该文件:
$include /etc/inputrc
set echo-control-characters Off
另一种选择是制作系统范围配置文件的个人副本,然后进行修改。
sleep 180
,按CTRL + C
~/.inputrc
尚不存在,则仅创建文件可能会丢失一些现有设置。就我而言,我首先注意到ctrl + left和ctrl + right已停止工作。解决方法是~/.inputrc
从这行开始$include /etc/inputrc
。也可以cp /etc/inputrc .inputrc
根据需要进行调整和编辑。
请尝试以下操作:
stty -echoctl
有关说明,请参见StéphaneChazelas的这篇精彩而详尽的文章,其中还介绍了其他一些功能stty
。
如果您想永久保留该更改(并且您正bash
按照问题所暗示的方式使用),则最好.bashrc
按照注释中jlmg的说明放入您的更改中(因此它适用于所有交互式shell)。
.bash_profile
仅通过登录shell解析该文件,则不能在所有终端上使用。应该将其放入.bashrc
,以便所有交互式调用都可以读取。
^[[A
stty -echo
这样做。当然,这也将防止其他所有内容的回显,如果您只想隐藏^C
s,则可能使此答案不成立。
^C
总是结尾,我可能会同意你的看法。但是^C
将在光标所在的位置打印,这会覆盖命令中任意位置的一对字符。这意味着,如果您需要复制粘贴该命令的某些部分,则可能会遇到一些麻烦。而且,^C
在查看终端时,不像在命令末尾那样容易识别。
如果您试图找到一种允许正常回声(包括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行。
set echo-control-characters off