Mac Terminal.app: Memaksa '^ C' untuk dicetak saat mengedit prompt saat ini, lalu batalkan

4

Ini kebalikan dari Mencegah “^ C” dicetak saat membatalkan permintaan pengeditan saat ini .

Saya menggunakan Bash. Ketika saya mengedit commandline di Bash, dan saya menekan Control-C untuk membatalkan commandline, karakter '^ C' tidak muncul. Saya ingin melihat karakter ini.

Saya mencoba perintah seperti stty -ctlechodan stty ctlecho(yang saya pinjam dari pertanyaan lain), tetapi ini tidak berhasil untuk saya. Perilaku ini tampaknya benar dengan lingkungan saya di Ubuntu, CentOS dan MacOSX. Ini hanya terjadi dalam Terminal.App Apple. Jika saya SSH ke Linux remote atau kotak FreeBSD, maka ^Cdicetak. Jadi, ini jelas hanya pengaturan lokal.

Memperbarui:

Ini adalah output dari stty -a, seperti yang diminta oleh @ 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;

Setelah mengetik stty sane, stty -aakan menampilkan yang berikut ini. Satu-satunya perbedaan adalah parameter -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;
Stefan Lasiewski
sumber
jika Anda belum mencoba "stty echoctl" , lakukanlah. "echoctl" harus identik dengan "ctlecho", tetapi pada beberapa sistem mungkin tidak. periksa keduanya untuk memastikan. jika Anda tidak membantu, silakan kirim output "stty -a" ke pertanyaan Anda.
quack quixote
Bagaimana Anda mengakses sistem ini? Putty, gnome-terminal, xterm, konsol?
Dennis Williamson
@Dennis Williamson: Saya menggunakan Apple Terminal.App, dan saya menggunakan sistem lokal atau SSH menggunakan sistem jarak jauh. Saya pikir ini terjadi dengan terminal gnome juga, tapi saya tidak yakin.
Stefan Lasiewski
1
Kedengarannya seperti ini mungkin spesifik untuk Terminal.app. Saya tidak memiliki akses ke Mac sekarang, jadi saya tidak bisa memeriksanya. Lihat opsi konfigurasi untuk Terminal.app untuk melihat apakah Anda dapat menemukan sesuatu yang relevan.
Dennis Williamson
@ Dennis Williamson: Anda benar. Ini hanya terjadi di Terminal.App. Terminal Gnome berfungsi dengan baik.
Stefan Lasiewski

Jawaban:

1

Baru saja membandingkan output saya dengan milik Anda dari "stty -a" baik dengan dan tanpa stty waras dan sampai pada kesimpulan yang sama: hanya perbedaannya adalah -iutf8.

Namun, bagi saya ^ C tidak bisa dicetak saat mengakhiri perintah yang sedang berjalan dengan CTRL + C di MBP saya, menjalankan 10.6.4:

uname-a Darwin noname 10.4.0 Darwin Kernel Versi 10.4.0: Jumat 23 April 18:28:53 PDT 2010; root: xnu-1504.7.4 ~ 1 / RELEASE_I386 i386

phrozen77
sumber
1

Berdasarkan jawaban Aesthir pada pertanyaan terkait, saya datang dengan yang berikut ini bekerja sangat baik pada mesin OS X 10.8 dan Debian saya:

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