Cuando trato de detener algo, lo uso ^C
y, a veces, ^D
en 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
SIGINT
proceso 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,^D
le 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^C
enví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 elfg
comando (reanudar en primer plano) o elbg
comando (reanudar en el antecedentes).Todas estas teclas se pueden cambiar con el
stty
comando. 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
python
en el shell, lo lleva al indicador >>> de python.Ahora, si golpeas
Ctrl+C
, diráKeyboardInterrupt
y 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+C
ahora, que va a salir de la instrucción for y el retorno a la pronta >>>Si usted golpea
Ctrl+D
en 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+C
terminará cualquier comando existente,Ctrl+D
lo hará y también saldrá de la máquina. (Además, laDelete
clave es lo mismo que hacer unCtrl+D
)fuente