Mac Terminal.app:在编辑当前提示时强制打印“^C”,然后中止它

Mac Terminal.app:在编辑当前提示时强制打印“^C”,然后中止它

这与防止在中止编辑当前提示时打印“^C”

我正在使用 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 sanestty -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

相关内容