Ctrl + C không hoạt động trong gnome-terminal


9

Trên máy chủ Linux của tôi, Ctrl+ Cdường như không hoạt động và tôi không biết cách tiến hành để làm cho nó hoạt động. Tôi đang sử dụng Ubuntu 10.04 với bash 4.1.5 (1) và đang làm việc trong Gnome-terminal.

Khi tôi nhấn Ctrl+ Ctrong khi tập lệnh này đang chạy, nó không khiến nó thoát.

#!/bin/bash
for i in `seq 500`
do
        ps -e > /dev/null
        echo $i
done

2
Ý của bạn là gì khi không hoạt động? Bạn đã nhấn phím đó ở đâu, bạn dự đoán điều gì sẽ xảy ra, điều gì thực sự đã xảy ra?
Gilles 'SO- ngừng trở nên xấu xa'

Có lẽ bạn có thể mô tả chi tiết thêm về lý do tại sao bạn nghĩ rằng Ctrl-C không hoạt động - có một số điều ở cấp độ hạt nhân nhất định không bị gián đoạn - ví dụ: quá trình treo chờ câu trả lời NFS (thất bại) thường không thể bị gián đoạn
Soren

Tôi cập nhật câu trả lời của tôi. Về cơ bản, Ctrl C không chấm dứt tập lệnh, mà tôi nghĩ nên chấm dứt khi thực hiện Ctrl C.
Ankur Agarwal

Liệu stty -ađầu ra có chứa intr=^C? Làm thế nào để bạn chạy kịch bản?
Stéphane Gimenez

1
Xin vui lòng không gửi câu hỏi chéo. Chọn trang web bạn muốn hỏi và điều chỉnh nó cho trang web đó.
nheo

Câu trả lời:


9

Cố gắng làm điều này

$ stty sane

và xem nếu nó khắc phục vấn đề, cũng kiểm tra xem phần bên trong có được đặt chính xác không

$ stty -a

Nếu bạn thấy nó intrđược đặt thành một cái gì đó khác với ^ C, thì bạn cũng có thể sửa nó bằng cách gõ

$ stty intr ^v^c

Điều này đã không giúp đỡ. stty -a hiển thị "int = ^ C" (không có dấu ngoặc kép)
Ankur Agarwal

Tôi có phải nhập ký tự ^ hoặc nhấn phím Ctrl không?
Ankur Agarwal

bạn chỉ cần nhấn phím Ctrl (^ là viết tắt của Ctrl-)
Soren

Có lẽ bạn có thể mô tả chi tiết thêm về lý do tại sao bạn nghĩ rằng Ctrl-C không hoạt động - có một số điều ở cấp độ hạt nhân nhất định không bị gián đoạn - ví dụ: quá trình treo chờ câu trả lời NFS (thất bại) thường không thể bị gián đoạn
Soren

Tôi đã thêm chi tiết cho câu hỏi của tôi. Về cơ bản Ctrl C không chấm dứt tập lệnh mà tôi đang chạy, mà tôi dự kiến ​​sẽ bị chấm dứt trên Ctrl C.
Ankur Agarwal

6

Vì nó trông giống như một gnome-terminalcấu hình bị hỏng , bạn có thể thử để nó khôi phục mặc định bằng cách sử dụng

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

(Bạn sẽ cần khởi động lại thiết bị đầu cuối để xem các hiệu ứng.)

Nếu mọi thứ đều ổn sau đó, hãy làm a rm -rf .gconf/apps/gnome-terminal-BROKEN.


4

Các cài đặt mặc định trong gnome-terminalliên kết Ctrl-CCtrl-Vcác phím để mô phỏng hành vi sao chép và dán của Windows. Nó có nghĩa là một tính năng không phải là một lỗi :)

Để vô hiệu hóa điều này, tại thiết bị đầu cuối gnome,

  1. hướng đến Menubar -> Edit -> Keyboard Shortcuts
  2. bấm vào cột Ctrl+ Ctrong cột Phím tắt cho đến khi bạn thấy New Accelerator....
  3. nhấn phím Backspacehoặc Deleteđể tắt ràng buộc phím
  4. xác minh rằng Disabledbây giờ xuất hiện trong cột Phím tắt.

Lưu ý rằng thay đổi này sẽ có hiệu lực ngay lập tức trên tất cả các thiết bị đầu cuối gnome.

Mẹo: gnome-terminal --show-menubarsẽ buộc gnome-terminal hiển thị Menubar nếu nó không được hiển thị.


3

Tôi sẽ đoán ở đây: Ctrl-C hoạt động, nhưng vì ps -emất nhiều thời gian để chạy so với phần còn lại của tập lệnh, nên tất cả những gì bạn làm là gửi SIGINT đến quy trình "ps". "ps" thoát và tập lệnh chọn đúng với một lần lặp khác thông qua mã vòng lặp.

Thực hiện sleep 10trong cửa sổ bash của bạn, trong khi nó chạy, điều khiển-C nó. Xem nếu điều đó làm việc. Nếu có, hãy chạy tập lệnh gốc của bạn và điều khiển C nhiều lần. Sớm hay muộn, bạn sẽ gặp may mắn và quá trình bash diễn giải kịch bản sẽ nhận được SIGINT.


Ctrl C khi ngủ 10 cũng không hoạt động.
Ankur Agarwal

2
Vì vậy, sử dụng gnome-terminal Ctrl C hoạt động nhưng Ctrl c thì không. Vì vậy, để làm gián đoạn giấc ngủ 10 nếu tôi thực hiện Ctrl + Shift + c thì nó hoạt động. Nhưng làm Ctrl + c không hoạt động. Tại sao nó là trường hợp nhạy cảm.
Ankur Agarwal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.