Драйвер терминала ядра ( termios
) интерпретирует специальные ключи, которые можно вводить для отправки сигнала процессу, отправки конца файла, удаления символов и т. Д. Это базовая функциональность ядра Unix и очень похожа на большинство реализаций Unix и Linux.
Команда stty
отображает или устанавливает termios
специальные символы, а также другие параметры для драйвера терминала.
Вызвать, stty -a
чтобы увидеть текущие значения специальных символов и другие «настройки линии терминала». В следующих примерах вы можете видеть, что intr
это Ctrl+ C, eof
это Ctrl+ D, susp
это Ctrl+ Z. (Я удалил другой вывод, чтобы показать только настройки специальных символов):
stty -a
специальные символы в 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
специальные символы на 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;
Чтобы изменить значение специального символа, например, чтобы изменить символ прерывания с Ctrl+ Cна Ctrl+, Eвызовите stty
это так ( ^E
буквально два символа, roundflex ( ^
), за которым следует буква E
):
stty intr '^E'
Для получения дополнительной информации см. Справочные страницы для stty
и termios
. В GNU / Linux вы также можете посмотреть tty_ioctl
справочную страницу.
Заметки:
intr
Ключ ( Ctrl+ Cпо умолчанию), на самом деле не убить процесс, но заставляет ядро посылать сигнал прерывания ( SIGINT
) ко всем процессам в группе процессов. Процессы могут организовывать перехват или игнорирование сигнала, но большинство процессов завершается, что является поведением по умолчанию.
Причина, по которой Ctrl+ dвыводит вас из системы, заключается в том, что драйвер линии терминала отправляет EOF (конец файла) на стандартный ввод оболочки. Оболочка завершается, когда получает стандартный конец файла.
bind -p
перечислить, так же как иhelp bind
для других