Ctrl + C tidak bekerja di terminal gnome

9

Di host Linux saya, Ctrl+ Csepertinya tidak berfungsi dan saya tidak tahu bagaimana melanjutkannya agar berfungsi. Saya menggunakan Ubuntu 10,04 dengan bash 4.1.5 (1), dan bekerja di terminal Gnome.

Ketika saya menekan Ctrl+ Cketika skrip ini berjalan, itu tidak menyebabkannya berhenti.

#!/bin/bash
for i in `seq 500`
do
        ps -e > /dev/null
        echo $i
done
Ankur Agarwal
sumber
2
Apa yang Anda maksud dengan “tidak bekerja”? Di mana Anda menekan tombol itu, apa yang Anda harapkan terjadi, apa yang sebenarnya terjadi?
Gilles 'SANGAT berhenti menjadi jahat'
Mungkin Anda bisa menjabarkan perincian lebih lanjut mengapa Anda berpikir bahwa Ctrl-C tidak berfungsi - ada hal-hal tingkat kernel tertentu yang tidak terputus - misalnya proses menunggu menunggu jawaban (gagal) NFS sering tidak dapat diganggu
Soren
Saya memperbarui jawaban saya. Pada dasarnya Ctrl C tidak menghentikan skrip, yang menurut saya harus dihentikan saat melakukan Ctrl C.
Ankur Agarwal
Apakah stty -aoutput mengandung intr=^C? Bagaimana Anda menjalankan skrip?
Stéphane Gimenez
1
Tolong jangan lintas posting pertanyaan. Pilih situs yang ingin Anda tanyakan, dan sesuaikan ke situs itu.
nhinkle

Jawaban:

9

Coba lakukan ini

$ stty sane

dan lihat apakah itu memperbaiki masalah, juga periksa apakah intr diatur dengan benar menggunakan

$ stty -a

Jika Anda menemukan bahwa intrini diatur ke sesuatu yang berbeda dari ^ C, maka Anda juga dapat memperbaikinya dengan mengetik

$ stty intr ^v^c
Soren
sumber
Ini tidak membantu. stty -a menunjukkan "intr = ^ C" (tanpa tanda kutip)
Ankur Agarwal
Apakah saya harus mengetikkan karakter ^ atau menekan tombol Ctrl?
Ankur Agarwal
Anda hanya perlu menekan tombol Ctrl (^ adalah kependekan dari Ctrl-)
Soren
Mungkin Anda bisa menjabarkan perincian lebih lanjut mengapa Anda berpikir bahwa Ctrl-C tidak berfungsi - ada hal-hal tingkat kernel tertentu yang tidak terputus - misalnya proses menunggu menunggu jawaban (gagal) NFS sering tidak dapat diganggu
Soren
Saya menambahkan lebih banyak detail ke pertanyaan saya. Pada dasarnya Ctrl C tidak menghentikan skrip yang saya jalankan, yang saya harapkan akan diakhiri pada Ctrl C.
Ankur Agarwal
6

Karena terlihat seperti gnome-terminalkonfigurasi yang rusak , Anda dapat mencoba membiarkannya memulihkan menggunakan default

mv .gconf/apps/gnome-terminal{,-BROKEN}

(Anda harus memulai ulang terminal untuk melihat efeknya.)

Jika semuanya baik-baik saja setelah itu, lakukan a rm -rf .gconf/apps/gnome-terminal-BROKEN.

rozcietrzewiacz
sumber
4

Pengaturan default di dalam gnome-terminalmengikat Ctrl-Cdan Ctrl-Vkunci untuk meniru perilaku copy-and-paste Windows. Itu dimaksudkan untuk menjadi fitur bukan bug :)

Untuk menonaktifkan ini, di terminal gnome,

  1. navigasi ke Menubar -> Edit -> Keyboard Shortcuts
  2. klik pada Ctrl+ Cdi kolom Shortcut Key sampai Anda melihat New Accelerator....
  3. tekan tombol Backspaceatau Deleteuntuk menonaktifkan penjilidan kunci
  4. verifikasi yang Disabledsekarang muncul di kolom Shortcut Key.

Perhatikan bahwa perubahan ini akan segera efektif pada semua terminal gnome.

Tip: gnome-terminal --show-menubarakan memaksa gnome-terminal untuk menampilkan menu jika tidak ditampilkan.

Cangkul-Kit
sumber
3

Saya akan menebak di sini: Ctrl-C tidak berfungsi, tetapi karena ps -ebutuh waktu lama untuk menjalankan relatif terhadap sisa skrip, yang Anda lakukan hanyalah mengirim SIGINT ke proses "ps". "ps" keluar, dan skrip mengambil dengan iterasi lain melalui kode loop.

Lakukan sleep 10di jendela bash Anda, saat dijalankan, kontrol-C-nya. Lihat apakah itu berhasil. Jika ya, jalankan skrip asli Anda, dan kontrol-C beberapa kali. Cepat atau lambat, Anda akan beruntung dan proses bash yang menginterpretasikan skrip akan mendapatkan SIGINT.

Bruce Ediger
sumber
Ctrl C pada sleep 10 juga tidak berfungsi.
Ankur Agarwal
2
Jadi menggunakan gnome-terminal Ctrl C berfungsi tetapi Ctrl c tidak. Jadi untuk mengganggu sleep 10 jika saya melakukan Ctrl + Shift + c berfungsi. Tetapi melakukan Ctrl + c tidak berhasil. Mengapa ini case sensitif.
Ankur Agarwal