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 stty
comando exibe ou define os termios
caracteres especiais, além de outros parâmetros para o driver da linha de terminal.
Invoque stty -a
para 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 stty
assim ( ^E
são literalmente dois caracteres, o circumflex ( ^
) seguido pela letra E
):
stty intr '^E'
Para mais informações, consulte as páginas de manual de stty
e termios
. No GNU / Linux, você também pode olhar na tty_ioctl
página do manual.
Notas:
A intr
chave ( 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 -p
listar, assim comohelp bind
para outros