O driver de terminal do kernel ( termios) interpreta as chaves especiais que podem ser digitadas para enviar um sinal para um processo, enviar final de arquivo, apagar caracteres etc. Esta é a funcionalidade básica do kernel Unix e muito semelhante na maioria das implementações Unix e Linux.
O sttycomando exibe ou define os termioscaracteres especiais, além de outros parâmetros para o driver da linha de terminal.
Invoque stty -apara ver os valores atuais dos caracteres especiais e outras "configurações da linha de terminal". Nos exemplos a seguir, você pode ver que intré Ctrl+ C, eofé Ctrl+ D, suspé Ctrl+ Z. (Excluí outra saída para mostrar apenas as configurações de caracteres especiais):
stty -a caracteres especiais no GNU / Linux:
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
stty -a caracteres especiais no FreeBSD:
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
Para alterar o valor de um caractere especial, por exemplo, para alterar o caractere de interrupção de Ctrl+ Cpara Ctrl+, Einvoque sttyassim ( ^Esão literalmente dois caracteres, o circumflex ( ^) seguido pela letra E):
stty intr '^E'
Para mais informações, consulte as páginas de manual de sttye termios. No GNU / Linux, você também pode olhar na tty_ioctlpágina do manual.
Notas:
A intrchave ( Ctrl+ Cpor padrão), na verdade, não elimina o processo, mas faz com que o kernel envie um sinal de interrupção ( SIGINT) para todos os processos dentro do grupo de processos. Os processos podem organizar para capturar ou ignorar o sinal, mas a maioria dos processos será encerrada, que é o comportamento padrão.
A razão que Ctrl+ dregistra-lo para fora é porque o controlador de linha terminal envia EOF (fim de arquivo) na entrada padrão do shell. O shell sai quando recebe o final do arquivo em sua entrada padrão.
bind -plistar, assim comohelp bindpara outros