Ctrl + C no funciona en gnome-terminal


9

En mi host Linux, Ctrl+ Cno parece funcionar y no sé cómo proceder para que funcione. Estoy usando Ubuntu 10.04 con bash 4.1.5 (1) y estoy trabajando en Gnome-terminal.

Cuando presioné Ctrl+ Cmientras se ejecutaba esta secuencia de comandos, no se cerró.

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

2
¿Qué quieres decir con "no funciona"? ¿Dónde presionó esa tecla, qué esperaba que sucediera, qué sucedió realmente?
Gilles 'SO- deja de ser malvado'

Tal vez pueda describir más detalles de por qué cree que Ctrl-C no funciona: hay ciertas cosas a nivel del núcleo que no son interrumpibles, por ejemplo, un proceso que se cuelga esperando una respuesta NFS (fallida) con frecuencia no se puede interrumpir
Soren

Actualicé mi respuesta. Básicamente, Ctrl C no finalizó un script, que creo que debería finalizar al hacer Ctrl C.
Ankur Agarwal

¿La stty -asalida contiene intr=^C? ¿Cómo ejecutas el script?
Stéphane Gimenez

1
Por favor, no publique preguntas cruzadas. Elija el sitio que desea consultar y adáptelo a ese sitio.
nhinkle

Respuestas:


9

Intenta hacer esto

$ stty sane

y vea si soluciona el problema, también verifique si el intr está configurado correctamente usando

$ stty -a

Si encuentra que intrestá configurado en algo diferente a ^ C, entonces también puede solucionarlo escribiendo

$ stty intr ^v^c

Esto no ayudó. stty -a muestra "intr = ^ C" (sin las comillas)
Ankur Agarwal

¿Tengo que escribir el carácter ^ o presionar la tecla Ctrl?
Ankur Agarwal

solo tienes que presionar la tecla Ctrl (^ es la abreviatura de Ctrl-)
Soren

Tal vez pueda describir más detalles de por qué cree que Ctrl-C no funciona: hay ciertas cosas a nivel del núcleo que no son interrumpibles, por ejemplo, un proceso que se cuelga esperando una respuesta NFS (fallida) con frecuencia no se puede interrumpir
Soren

Agregué más detalles a mi pregunta. Básicamente, Ctrl C no está terminando un script que estoy ejecutando, que espero que termine en Ctrl C.
Ankur Agarwal

6

Dado que parece una gnome-terminalconfiguración rota , puede intentar dejar que restablezca los valores predeterminados usando

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

(Deberá reiniciar el terminal para ver los efectos).

Si todo está bien después de eso, haz un rm -rf .gconf/apps/gnome-terminal-BROKEN.


4

La configuración predeterminada gnome-terminalvincula las teclas Ctrl-Cy Ctrl-Vpara emular el comportamiento de copiar y pegar de Windows. Estaba destinado a ser una característica, no un error :)

Para deshabilitar esto, en el terminal gnome,

  1. navegar a Menubar -> Edit -> Keyboard Shortcuts
  2. haga clic en Ctrl+ Cen la columna Tecla de acceso directo hasta que vea New Accelerator....
  3. presione la tecla Backspaceo Deletepara deshabilitar la encuadernación de teclas
  4. verifique que Disabledahora aparezca en la columna Clave de acceso directo.

Tenga en cuenta que este cambio será efectivo de inmediato en todos los terminales gnome.

Consejo: gnome-terminal --show-menubarforzará a gnome-terminal a mostrar la barra de menús si no se muestra.


3

Voy a adivinar aquí: Ctrl-C funciona, pero debido a que ps -elleva mucho tiempo ejecutarlo en relación con el resto del script, todo lo que debe hacer es enviar SIGINT al proceso "ps". "ps" sale y el script comienza con otra iteración a través del código de bucle.

Haga un sleep 10en su ventana bash, mientras se ejecuta, control-C. A ver si eso funciona. Si lo hace, ejecute su script original y control-C varias veces. Tarde o temprano, tendrás suerte y el proceso bash que interpreta el guión obtendrá el SIGINT.


Ctrl C en sleep 10 tampoco funciona.
Ankur Agarwal

2
Entonces, el uso de gnome-terminal Ctrl C funciona pero Ctrl c no. Entonces, para interrumpir el sueño 10 si hago Ctrl + Shift + c, funciona. Pero hacer Ctrl + c no funciona. ¿Por qué es sensible a mayúsculas y minúsculas?
Ankur Agarwal
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.