Der Terminaltreiber ( termios) des Kernels interpretiert die Sonderschlüssel, die eingegeben werden können, um ein Signal an einen Prozess zu senden, das Dateiende zu senden, Zeichen zu löschen usw. Dies ist die grundlegende Unix-Kernelfunktionalität und bei den meisten Unix- und Linux-Implementierungen sehr ähnlich.
Der sttyBefehl zeigt die termiosSonderzeichen sowie andere Parameter für den Terminalleitungstreiber an oder legt diese fest .
Rufen Sie stty -aauf, um die aktuellen Werte der Sonderzeichen und andere "Terminalzeileneinstellungen" anzuzeigen. In den folgenden Beispielen können Sie sehen , dass intrist Ctrl+ C, eofist Ctrl+ D, suspist Ctrl+ Z. (Ich habe andere Ausgaben gelöscht, um nur die Sonderzeicheneinstellungen anzuzeigen.):
stty -a Sonderzeichen unter 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 Sonderzeichen auf 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;
Um den Wert eines Sonderzeichens zu ändern, z. B. um das Interrupt-Zeichen von Ctrl+ Cauf Ctrl+ zu ändern , Erufen Sie sttywie ^Efolgt auf ( besteht buchstäblich aus zwei Zeichen, dem Zirkumflex ( ^) gefolgt vom Buchstaben E):
stty intr '^E'
Weitere Informationen finden Sie in den Manpages für sttyund termios. Unter GNU / Linux können Sie auch die tty_ioctlManpage aufrufen.
Anmerkungen:
Der intrSchlüssel ( standardmäßig Ctrl+ C) beendet den Prozess nicht tatsächlich, sondern veranlasst den Kernel, ein Interrupt-Signal ( SIGINT) an alle Prozesse innerhalb der Prozessgruppe zu senden . Die Prozesse können das Signal abfangen oder ignorieren, aber die meisten Prozesse werden beendet, was das Standardverhalten ist.
Der Grund, warum Ctrl+ dSie abmeldet, ist, dass der Terminalleitungstreiber EOF (Dateiende) an die Standardeingabe der Shell sendet. Die Shell wird beendet, wenn sie das Dateiende an ihrer Standardeingabe empfängt.
bind -paufzulisten, wiehelp bindfür andere