Cuando trato de detener algo, lo uso ^Cy, a veces, ^Den la terminal.
¿Cuál es la diferencia entre los dos? Por qué algún programa no responde ^C, pero ^D. ¿Por qué Terminal.app simplemente se cierra cuando lo uso ^D?
terminal
terminal.app
prosseek
fuente
fuente

Respuestas:
CtrlCle dice a la terminal que envíe un
SIGINTproceso al primer plano actual, que por defecto se traduce en la finalización de la aplicación. CtrlDle dice al terminal que debe registrar un EOF en la entrada estándar, que bash interpreta como un deseo de salir.fuente
Ctrl+ D(
^D) significa el final del archivo . Solo funciona al comienzo de una línea (estoy simplificando un poco), y no tiene ningún efecto si el programa no está leyendo la entrada del terminal. En su experimento,^Dle dijo al shell que no iba a escribir más comandos, por lo que salió; entonces la terminal salió porque su subprograma había terminado.Ctrl+ C(
^C) significa "interrumpir", es decir, detener lo que estás haciendo. Técnicamente, al presionar se^Cenvía la señal INT , que de forma predeterminada finaliza una aplicación, pero que en muchos programas significa volver al nivel superior (por ejemplo, en un shell, dejar de escribir una línea de comando y volver a un mensaje prístino).Si un programa no responde
^C, puede intentar Ctrl+ \(^\). Esto envía la señal QUIT , que por defecto termina una aplicación, y que no interceptan tantos programas.Otra tecla que envía una señal es Ctrl+ Z(
^Z). Envía la señal TSTP , que detiene el programa que se ejecuta en primer plano. (TSTP es la abreviatura de "parada terminal"; es similar a STOP pero TSTP puede ignorarse mientras que STOP no puede). Desde el shell, puede reanudar la ejecución de ese programa con elfgcomando (reanudar en primer plano) o elbgcomando (reanudar en el antecedentes).Todas estas teclas se pueden cambiar con el
sttycomando. Algunos programas, particularmente los programas de pantalla completa que tienen combinaciones de teclas, los deshabilitan.fuente
KeyboardInterrupt? Se cierra con ctrl + d (si está al principio de una línea) y con ctrl + \.Agregando a las 2 respuestas realmente buenas anteriores, aquí hay un ejemplo:
Si escribe
pythonen el shell, lo lleva al indicador >>> de python.Ahora, si golpeas
Ctrl+C, diráKeyboardInterrupty permanecerá en el >>>.Si se entra en un bucle, por ejemplo, escribiendo
for x in (text):espera para que escriba más allá al mostrar una pronta ..., si se golpeaCtrl+Cahora, que va a salir de la instrucción for y el retorno a la pronta >>>Si usted golpea
Ctrl+Den cualquier momento, ya sea en >>> o ... saldrá del indicador de Python y volverá al shell original.Del mismo modo, si ssh'ed en otra máquina, a
Ctrl+Cterminará cualquier comando existente,Ctrl+Dlo hará y también saldrá de la máquina. (Además, laDeleteclave es lo mismo que hacer unCtrl+D)fuente