El controlador de terminal del núcleo ( termios
) interpreta las teclas especiales que se pueden escribir para enviar una señal a un proceso, enviar el final del archivo, borrar caracteres, etc. Esta es la funcionalidad básica del núcleo de Unix y muy similar en la mayoría de las implementaciones de Unix y Linux.
El stty
comando muestra o establece los termios
caracteres especiales, así como otros parámetros para el controlador de línea de terminal.
Invoque stty -a
para ver los valores actuales de los caracteres especiales y otras "configuraciones de línea de terminal". En los siguientes ejemplos, puede ver que intr
es Ctrl+ C, eof
es Ctrl+ D, susp
es Ctrl+ Z. (He eliminado otra salida para mostrar solo la configuración de caracteres especiales):
stty -a
caracteres especiales en 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 especiales en 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 cambiar el valor de un carácter especial, por ejemplo, para cambiar el carácter de interrupción de Ctrl+ Ca Ctrl+ Einvocar de stty
esta manera ( ^E
es literalmente dos caracteres, el circunflejo ( ^
) seguido de la letra E
):
stty intr '^E'
Para obtener más información, consulte las páginas de manual para stty
y termios
. En GNU / Linux también puede mirar la tty_ioctl
página de manual.
Notas:
La intr
clave ( Ctrl+ Cpor defecto), en realidad no mata el proceso, pero hace que el núcleo envíe una señal de interrupción ( SIGINT
) a todos los procesos dentro del grupo de procesos. Los procesos pueden hacer arreglos para capturar o ignorar la señal, pero la mayoría de los procesos finalizarán, que es el comportamiento predeterminado.
La razón por la que Ctrl+ dcierra la sesión es porque el controlador de línea de terminal envía EOF (final del archivo) en la entrada estándar del shell. El shell sale cuando recibe el final del archivo en su entrada estándar.
bind -p
hacer una lista,help bind
para otros