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 stty
comando visualizza o imposta i termios
caratteri speciali, nonché altri parametri per il driver della linea terminale.
Richiamare stty -a
per 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 stty
questo modo ( ^E
sono letteralmente due caratteri, il circumflex ( ^
) seguito dalla lettera E
):
stty intr '^E'
Per ulteriori informazioni, consultare le pagine man di stty
e termios
. Su GNU / Linux puoi anche guardare la tty_ioctl
pagina man.
Appunti:
La intr
chiave ( 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 -p
ad elencare, così comehelp bind
per gli altri