Ctrl + C не працює в gnome-терміналі


9

На моєму хості Linux Ctrl+ C, здається, не працює, і я не знаю, як діяти, щоб він працював. Я використовую Ubuntu 10.04 з bash 4.1.5 (1) і працюю в Gnome-терміналі.

Коли я натискав Ctrl+, Cпоки цей сценарій працює, це не змусило його вийти.

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

2
Що ви маєте на увазі під "не працює"? Де ти натиснув цю клавішу, що ти очікував, що відбудеться, що насправді сталося?
Жил 'SO- перестань бути злим'

Можливо, ви можете описати більш детальну інформацію про те, чому ви вважаєте, що Ctrl-C не працює - є певні речі на рівні ядра, які не перериваються - наприклад, процес висіння, який очікує на (невдалий) відповідь NFS, часто не може бути перерваний
Soren

Я оновив свою відповідь. В основному, Ctrl C не припиняв сценарій, що, на мою думку, слід припинити на Ctrl C.
Ankur Agarwal

Чи stty -aмістить вихід intr=^C? Як запускати сценарій?
Стефан Гіменез

1
Будь ласка, не перехресне запитання. Виберіть веб-сайт, про який ви хочете запитати, і налаштуйте його на цей сайт.
nhinkle

Відповіді:


9

Спробуйте це зробити

$ stty sane

і перевірте, чи вона усуває проблему, також перевірте, чи правильно встановлений intr за допомогою

$ stty -a

Якщо ви виявите, що intrвстановлено щось інше, ніж ^ C, ви також можете виправити це, ввівши

$ stty intr ^v^c

Це не допомогло. stty -a показує "intr = ^ C" (без лапок)
Ankur Agarwal

Чи потрібно вводити символ ^ або натискати клавішу Ctrl?
Ankur Agarwal

вам просто потрібно натиснути клавішу Ctrl (^ це коротко для Ctrl-)
Soren

Можливо, ви можете описати більш детальну інформацію про те, чому ви вважаєте, що Ctrl-C не працює - є певні речі на рівні ядра, які не перериваються - наприклад, процес висіння, який очікує на (невдалий) відповідь NFS, часто не може бути перерваний
Soren

Я додав більше деталей до свого питання. В основному, Ctrl C не закінчує запущений сценарій, який, як я очікую, буде припинено на Ctrl C.
Ankur Agarwal,

6

Оскільки це виглядає як зламана gnome-terminalконфігурація, ви можете спробувати дозволити йому відновити типові настройки за допомогою

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

(Вам потрібно буде перезапустити термінал, щоб побачити ефекти.)

Якщо після цього все добре, зробіть rm -rf .gconf/apps/gnome-terminal-BROKEN.


4

Налаштування за замовчуванням gnome-terminalприв’язує клавіші Ctrl-Cта, Ctrl-Vщоб імітувати поведінку копіювання та вставки Windows. Це мало бути функцією, а не помилкою :)

Щоб відключити це, на терміналі gnome,

  1. перейти до Menubar -> Edit -> Keyboard Shortcuts
  2. натисніть Ctrl+ Cу стовпці клавіш швидкого доступу, поки не побачите New Accelerator....
  3. натисніть клавішу Backspaceабо, Deleteщоб вимкнути прив’язку клавіш
  4. переконайтеся, що Disabledтепер відображається у стовпці клавіш швидкого доступу.

Зауважте, що ця зміна буде негайно ефективною для всіх gnome-терміналів.

Порада: gnome-terminal --show-menubarзмусить gnome-terminal показати Menubar, якщо він не показаний.


3

Я збираюся здогадуватися тут: Ctrl-C справді працює, але оскільки ps -eпотрібно тривати довгий час відносно решти сценарію, все, що ви робите, - це відправити SIGINT до процесу "ps". "ps" закінчується, і сценарій підбирається з іншою ітерацією через цикл циклу.

Зробіть sleep 10у своєму вікні bash, поки він працює, контролюйте його. Подивіться, чи це працює. Якщо це так, запустіть свій оригінальний сценарій та контролюйте його C декілька разів. Рано чи пізно вам пощастить, і процес bash, який інтерпретує сценарій, отримає SIGINT.


Ctrl C у режимі сну 10 також не працює.
Ankur Agarwal

2
Тож використання gnome-терміналу Ctrl C працює, але Ctrl c не робить. Отже, перервати сон 10, якщо я роблю Ctrl + Shift + c, це працює. Але робити Ctrl + c не працює. Чому він враховує регістри.
Анкур Агарвал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.