Quando provo a fermare qualcosa, uso ^Ce talvolta ^Dnel terminale.
Qual è la differenza tra i due? Perché alcuni programmi non rispondono ^C, ma ^D. Perché Terminal.app si chiude quando uso ^D?
Quando provo a fermare qualcosa, uso ^Ce talvolta ^Dnel terminale.
Qual è la differenza tra i due? Perché alcuni programmi non rispondono ^C, ma ^D. Perché Terminal.app si chiude quando uso ^D?
Risposte:
CtrlCindica al terminale di inviare un SIGINTal processo in primo piano corrente, che per impostazione predefinita si traduce in chiusura dell'applicazione. CtrlDdice al terminale che dovrebbe registrare un EOF sull'input standard, che bash interpreta come un desiderio di uscire.
Ctrl+ D( ^D) indica la fine del file . Funziona solo all'inizio di una riga (sto semplificando un po ') e non ha alcun effetto se il programma non sta leggendo l'input dal terminale. Nel tuo esperimento, hai ^Ddetto alla shell che non avresti digitato più comandi, quindi è uscito; quindi il terminale è uscito perché il suo sottoprogramma era terminato.
Ctrl+ C( ^C) significa "interrompere", cioè interrompere ciò che stai facendo. Tecnicamente, premendo si ^Cinvia il segnale INT , che per impostazione predefinita termina un'applicazione, ma che in molti programmi significa tornare al livello superiore (ad esempio, in una shell, smettere di digitare una riga di comando e tornare a un prompt incontaminato).
Se un programma non risponde ^C, puoi provare Ctrl+ \( ^\). Questo invia il segnale QUIT , che per impostazione predefinita termina un'applicazione e che non molti programmi intercettano.
Un altro tasto che invia un segnale è Ctrl+ Z( ^Z). Invia il segnale TSTP , che mette in pausa il programma in primo piano. (TSTP è l'abbreviazione di "terminal stop"; è simile a STOP ma TSTP può essere ignorato mentre STOP non può.) Dalla shell, è possibile riprendere l'esecuzione di quel programma con il fgcomando (riprendi in primo piano) o il bgcomando (riprendi in sfondo).
Tutte queste chiavi possono essere modificate con il sttycomando. Alcuni programmi, in particolare i programmi a schermo intero con combinazioni di tasti, li disabilitano.
KeyboardInterrupt? Si chiude con ctrl + d (se all'inizio di una riga) e con ctrl + \.
Aggiungendo alle 2 risposte davvero buone sopra, ecco un esempio:
Se digiti pythonnella shell, ti porta nel prompt >>> di python.
Ora, se colpisci Ctrl+C, dirà KeyboardInterrupte rimani nel >>>.
Se entri in un ciclo for, ad esempio digitando for x in (text):, aspetta che tu digiti ulteriormente mostrando un prompt ..., se premi Ctrl+Cora, uscirà dall'istruzione for e tornerà al prompt >>>
Se premi Ctrl+Din qualsiasi momento, sia in >>> o ... uscirà dal prompt di Python e tornerà alla shell originale.
Allo stesso modo, se inviato a un'altra macchina, a Ctrl+Cterminerà qualsiasi comando esistente, Ctrl+Dlo farà e uscirà anche dalla macchina. (Inoltre, la Deletechiave è la stessa di fare un Ctrl+D)