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

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

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.


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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.