Quando tento parar alguma coisa, uso ^Ce às vezes ^Dno terminal.
Qual a diferença entre os dois? Por que algum programa não responde ^C, mas ^D. Por que o Terminal.app é encerrado quando uso ^D?
Quando tento parar alguma coisa, uso ^Ce às vezes ^Dno terminal.
Qual a diferença entre os dois? Por que algum programa não responde ^C, mas ^D. Por que o Terminal.app é encerrado quando uso ^D?
Respostas:
CtrlCinforma ao terminal para enviar um SIGINTao processo atual em primeiro plano, que por padrão se traduz em encerrar o aplicativo. CtrlDinforma ao terminal que ele deve registrar um EOF na entrada padrão, que o bash interpreta como um desejo de sair.
Ctrl+ D( ^D) significa final do arquivo . Funciona apenas no início de uma linha (estou simplificando um pouco) e não tem efeito se o programa não estiver lendo as entradas do terminal. Em seu experimento, ^Ddisse ao shell que você não digitaria mais nenhum comando, então ele saiu; então o terminal saiu porque seu subprograma terminou.
Ctrl+ C( ^C) significa "interromper", ou seja, pare o que você está fazendo. Tecnicamente, pressionar pressiona ^Cenvia o sinal INT , que por padrão encerra um aplicativo, mas que em muitos programas significa voltar ao nível superior (por exemplo, em um shell, pare de digitar uma linha de comando e volte a um prompt primitivo).
Se um programa não responder ^C, você pode tentar Ctrl+ \( ^\). Isso envia o sinal QUIT , que por padrão encerra um aplicativo e que não são interceptados por tantos programas.
Outra tecla que envia um sinal é Ctrl+ Z( ^Z). Ele envia o sinal TSTP , que interrompe o programa em execução em primeiro plano. (TSTP é a abreviação de "terminal stop"; é semelhante a STOP, mas o TSTP pode ser ignorado, enquanto STOP não pode.) No shell, você pode retomar a execução desse programa com o fgcomando (resume em primeiro plano) ou o bgcomando (resume em fundo).
Todas essas chaves podem ser alteradas com o sttycomando Alguns programas, principalmente os de tela cheia que possuem ligações de teclas, os desativam.
KeyboardInterrupt? Ele sai com ctrl + d (se no início de uma linha) e com ctrl + \.
Adicionando as 2 respostas realmente boas acima, aqui está um exemplo:
Se você digitar pythono shell, ele será direcionado para o prompt >>> do python.
Agora, se você pressionar Ctrl+C, ele dirá KeyboardInterrupte permanecerá no >>>.
Se você entrar em um loop for, por exemplo, digitando for x in (text):-o, espera que você digite mais, mostrando um prompt ..., se você pressionar Ctrl+Cagora, ele sairá da instrução for e retornará para o prompt >>>
Se você pressionar Ctrl+Da qualquer momento, seja em >>> ou ..., sairá do prompt do python e retornará ao shell original.
Da mesma forma, se transferido para outra máquina, a Ctrl+Cencerrará todos os comandos existentes, Ctrl+Dfará isso e sairá da máquina também. (Além disso, a Deletechave é a mesma que a Ctrl+D)