4

Это противоположно предотвращению печати «^ C» при отмене редактирования текущего приглашения.

Я использую Bash. Когда я редактирую командную строку в Bash и нажимаю Control-C, чтобы отменить командную строку, символ «^ C» не отображается. Я хотел бы видеть этого персонажа.

Я пробовал команды, такие как stty -ctlecho и stty ctlecho (которые я позаимствовал из другого вопроса), но у меня это не сработало. Такое поведение, кажется, верно для моей среды на Ubuntu, CentOS и MacOSX. Это происходит только в терминале Apple.Приложение. Если я подключаюсь по 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;

2 ответа2

1

Основываясь на ответе Aesthir на связанный вопрос, я пришел к следующему, который прекрасно работает как на моих машинах с OS X 10.8, так и на Debian:

trap '{ echo -n "^C" >&2; }' SIGINT
stty -echoctl
1

Просто сравните мои результаты с вашими из "stty -a" как с stty-sane, так и без него, и пришли к одному и тому же выводу: единственная разница - -iutf8.

Тем не менее, для меня ^ C действительно печатается при завершении рабочей команды с CTRL + C на моем MBP, работающем 10.6.4:

uname -a Darwin noname 10.4.0 Ядро Darwin Версия 10.4.0: Пт, 23 апреля 18:28:53 PDT 2010; root: xnu-1504.7.4 ~ 1/RELEASE_I386 i386

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .