Quando tento parar alguma coisa, uso ^C
e às vezes ^D
no 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
?
terminal
terminal.app
prosseek
fonte
fonte
Respostas:
CtrlCinforma ao terminal para enviar um
SIGINT
ao 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.fonte
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,^D
disse 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^C
envia 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 ofg
comando (resume em primeiro plano) ou obg
comando (resume em fundo).Todas essas chaves podem ser alteradas com o
stty
comando Alguns programas, principalmente os de tela cheia que possuem ligações de teclas, os desativam.fonte
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
python
o shell, ele será direcionado para o prompt >>> do python.Agora, se você pressionar
Ctrl+C
, ele diráKeyboardInterrupt
e 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ê pressionarCtrl+C
agora, ele sairá da instrução for e retornará para o prompt >>>Se você pressionar
Ctrl+D
a 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+C
encerrará todos os comandos existentes,Ctrl+D
fará isso e sairá da máquina também. (Além disso, aDelete
chave é a mesma que aCtrl+D
)fonte