Il driver terminale del kernel ( termios) interpreta le chiavi speciali che possono essere digitate per inviare un segnale a un processo, inviare la fine del file, cancellare i caratteri, ecc. Questa è la funzionalità base del kernel Unix e molto simile sulla maggior parte delle implementazioni Unix e Linux.
Il sttycomando visualizza o imposta i termioscaratteri speciali, nonché altri parametri per il driver della linea terminale.
Richiamare stty -aper vedere i valori correnti dei caratteri speciali e altre "impostazioni della linea terminale". Negli esempi seguenti, puoi vedere che intrè Ctrl+ C, eofè Ctrl+ D, suspè Ctrl+ Z. (Ho eliminato altri output per mostrare solo le impostazioni dei caratteri speciali):
stty -a caratteri speciali su 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 personaggi speciali su 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;
Per modificare il valore di un carattere speciale, ad esempio, per modificare il carattere di interruzione da Ctrl+ Ca Ctrl+ Einvocare in sttyquesto modo ( ^Esono letteralmente due caratteri, il circumflex ( ^) seguito dalla lettera E):
stty intr '^E'
Per ulteriori informazioni, consultare le pagine man di sttye termios. Su GNU / Linux puoi anche guardare la tty_ioctlpagina man.
Appunti:
La intrchiave ( Ctrl+ Cdi default), in realtà non uccide il processo, ma fa sì che il kernel invii un segnale di interruzione ( SIGINT) a tutti i processi all'interno del gruppo di processi. I processi possono disporre di catturare o ignorare il segnale, ma la maggior parte dei processi terminerà, che è il comportamento predefinito.
Il motivo per cui Ctrl+ dsi disconnette è perché il driver della linea terminale invia EOF (fine del file) sull'input standard della shell. La shell termina quando riceve la fine del file sul suo input standard.
bind -pad elencare, così comehelp bindper gli altri