Mac Terminal.app: Força a '^ C' a ser impressa ao editar o prompt atual, depois abortá-lo

4

Isso é o oposto de Impedir “^ C ”De ser impresso ao abortar a edição do prompt atual .

Estou usando o Bash. Quando estou editando a linha de comando no Bash, e pressiono Control-C para abortar a linha de comando, o caractere '^ C' não é exibido. Eu gostaria de ver esse personagem.

Eu tentei comandos como stty -ctlecho e stty ctlecho (que eu peguei emprestado da outra pergunta), mas isso não funcionou para mim. Esse comportamento parece ser verdade com o meu ambiente no Ubuntu, CentOS e MacOSX. Isso só acontece no Terminal.App da Apple. Se eu SSH para um Linux remoto ou caixa FreeBSD, então ^C é impresso. Então, isso é claramente apenas uma configuração local.

Atualização:

Aqui está a saída de stty -a , conforme solicitado por @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;

Depois de digitar stty sane , stty -a exibirá o seguinte. A única diferença é o parâmetro de -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;
    
por Stefan Lasiewski 02.06.2010 / 01:56

2 respostas

1

Apenas comparei minhas saídas com as suas de "stty -a" com e sem stty sane e cheguei à mesma conclusão: somente a diferença é -iutf8.

No entanto, para mim o ^ C é impresso ao finalizar um comando em execução com CTRL + C no meu MBP, executando 10.6.4:

uname -a Darwin noname 10.4.0 Darwin Kernel Versão 10.4.0: Sex 23 de abril 18:28:53 PDT 2010; root: xnu-1504.7.4 ~ 1 / RELEASE_I386 i386

    
por 28.07.2010 / 10:12
1

Com base na resposta do Aesthir sobre uma questão relacionada, eu criei o seguinte que funciona muito bem no meu OS X 10.8 e nas máquinas Debian:

trap '{ echo -n "^C" >&2; }' SIGINT
stty -echoctl
    
por 02.07.2013 / 01:33