我正在使用 Bash。当我在 Bash 中编辑命令行时,按下 Control-C 来中止命令行,'^C' 字符不会显示。我想看到这个字符。
我尝试了类似stty -ctlecho
和的命令stty ctlecho
(我从另一个问题中借用了这些命令),但这对我不起作用。这种行为似乎适用于我在 Ubuntu、CentOS 和 MacOSX 上的环境。这只发生在 Apple 的 Terminal.App 中。如果我通过 SSH 连接到远程 Linux 或 FreeBSD 框,则会^C
打印。所以,这显然只是一个本地设置。
更新:
stty -a
以下是@quack quixote 要求的输出:
$ stty -a
speed 9600 baud; 41 rows; 88 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
-extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
-ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
输入 后stty sane
,stty -a
会输出以下内容。唯一的区别是 的参数-iutf8
。
$ stty sane
$ stty -a
speed 9600 baud; 41 rows; 157 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
-extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -iutf8
-ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
答案1
刚刚将我的输出与您从“stty -a”的输出(有和没有 stty sane)进行了比较,得出了相同的结论:唯一的区别是 -iutf8。
但是,对于我来说,在运行 10.6.4 的 MBP 上使用 CTRL + C 终止正在运行的命令时,会打印 ^C:
uname -a Darwin noname 10.4.0 Darwin 内核版本 10.4.0:2010 年 4 月 23 日星期五 18:28:53 PDT;root:xnu-1504.7.4~1/RELEASE_I386 i386
答案2
基于Aesthir 的回答在一个相关问题上,我想到了下列的它在我的 OS X 10.8 和 Debian 机器上运行良好:
trap '{ echo -n "^C" >&2; }' SIGINT
stty -echoctl