Lorsque j'essaie d'arrêter quelque chose, j'utilise ^C
et parfois ^D
en terminal.
Quelle est la différence entre les deux? Pourquoi certains programmes ne répondent pas ^C
, mais ^D
. Pourquoi Terminal.app se ferme-t-il quand j'utilise ^D
?
terminal
terminal.app
Prosseek
la source
la source
Réponses:
CtrlCindique au terminal d'envoyer un message
SIGINT
au processus de premier plan en cours, ce qui, par défaut, se traduit par la fermeture de l'application. CtrlDindique au terminal qu'il doit enregistrer un EOF sur une entrée standard, ce que bash interprète comme un désir de sortir.la source
Ctrl+ D(
^D
) signifie fin de fichier . Cela ne fonctionne qu'au début d'une ligne (je simplifie un peu), et n'a aucun effet si le programme ne lit pas les entrées du terminal. Dans votre expérience,^D
vous avez dit au shell que vous n’alliez plus taper de commandes, il s’est arrêté; puis le terminal est sorti parce que son sous-programme était terminé.Ctrl+ C(
^C
) signifie “interrompre”, c.-à-d. arrêtez ce que vous faites. Techniquement, appuyer sur^C
envoie le signal INT qui, par défaut, met fin à une application, mais qui, dans de nombreux programmes, signifie revenir au niveau supérieur (par exemple, dans un shell, arrêtez de taper une ligne de commande et revenez à une invite vierge).Si un programme ne répond pas
^C
, vous pouvez essayer Ctrl+ \(^\
). Cela envoie le signal QUIT qui, par défaut, met fin à une application et que peu de programmes interceptent.Une autre touche qui envoie un signal est Ctrl+ Z(
^Z
). Il envoie le signal TSTP , ce qui met en pause le programme exécuté au premier plan. (TSTP est l'abréviation de “terminal stop”; il est similaire à STOP mais TSTP peut être ignoré alors que STOP ne le peut pas.) À partir du shell, vous pouvez reprendre l'exécution de ce programme avec lafg
commande (resume au premier plan) ou labg
commande (resume au début). Contexte).Toutes ces clés peuvent être changées avec la
stty
commande. Certains programmes, notamment les programmes plein écran dotés de raccourcis clavier, les désactivent.la source
KeyboardInterrupt
? Il se ferme avec ctrl + d (si au début d'une ligne), et avec ctrl + \.Ajoutant aux 2 très bonnes réponses ci-dessus, voici un exemple:
Si vous tapez
python
dans le shell, cela vous mènera à l'invite >>> de python.Maintenant, si vous frappez
Ctrl+C
, il diraKeyboardInterrupt
et restera dans le >>>.Si vous entrez dans une boucle for, par exemple en le saisissant
for x in (text):
, attend de taper plus en affichant une invite ..., si vous appuyezCtrl+C
maintenant, il sortira de l'instruction for et retournera à l'invite >>>Si vous appuyez sur
Ctrl+D
à tout moment, que ce soit dans >>> ou ..., il sortira de l'invite de python et retournera au shell d'origine.De même, si ssh'ed sur une autre machine, a
Ctrl+C
mettra fin à toute commande existante, leCtrl+D
fera et sortira également de la machine. (En outre, laDelete
clé est la même chose que faire aCtrl+D
)la source