Ответ 1
Чтобы получить все назначения символов управления терминалом:
stty -a
В Linux/Unix есть сигналы. Мне кажется, что Ctrl C один (SIGINT
).
Теперь, в некоторых других приложениях есть сигналы через Ctrl X?!
Это даже сигнал или он генерирует escape-последовательность?
Есть ли что-нибудь еще, что я могу использовать как нечто похожее на Ctrl C (Ctrl V, Ctrl X...)?
Если у кого есть ключ, я знаком с C больше, чем bash, но ответы на обоих языках оценены!
Чтобы получить все назначения символов управления терминалом:
stty -a
Возможно, существует недоразумение. Ctrl C не генерирует сигнал. Вполне возможно нажать Ctrl C в любом месте, и не произойдет никаких плохих событий (например, в каждом текстовом редакторе или текстовом редакторе, что де-факто стандарт для "копирования" ).
Однако, когда вы запускаете программу в оболочке, ваши нажатия клавиш действительно попадают в оболочку, а не в вашу программу. Оболочка будет перенаправлять (почти) все на вашу программу stdin и пересылать все, что поступает из stdout, в терминал или другой процесс или файл (если вы использовали канал или перенаправление).
Если оболочка видит, что вы нажимаете Ctrl C, тогда оболочка отправляет сигнал прерывания. Но это действительно что-то, что делает оболочка, а не то, что волшебным образом происходит из-за комбинации клавиш.
О Ctrl X, вы, вероятно, имели в виду Ctrl Z. Это останавливает процесс, и оболочка выводит число, которое вы можете использовать с помощью fg
, чтобы запустить его снова.
Терминал назначает особый смысл определенным последовательностям клавиш. Это включает удаление символа, удаление до начала строки (Ctrl U),...
В частности, когда включен локальный режим терминала ISIG
:
VINTR
(обычно Ctrl C) генерирует SIGINT
(прерывается пользователем).VQUIT
(обычно Ctrl \) генерирует SIGQUIT
(например, SIGINT, но также и ядро дампа).VSUSP
(обычно Ctrl Z) генерирует SIGTSTP
(останавливается терминальным вводом-выводом).VDSUSP
(в некоторых системах, а не в Linux) генерирует SIGTSTP
, когда программа пытается его прочитать.Вышеприведенные конфигурации. Это описано в termios (3) manpage.
От Wikipedia
Ctrl x Ctrl e: редактирует текущую строку в программе $EDITOR, или vi если undefined.
Ctrl x Ctrl r: читайте содержимое файла inputrc и включая любые привязки или назначения переменных, найденные там.
Ctrl x Ctrl u: Инкрементное отмена, отдельно запоминаемая для каждой строки.
Ctrl x Ctrl v: отобразить информацию о версии текущего экземпляра bash.
Ctrl x Ctrl x: чередует курсор со старой позицией. (С-х, потому что x имеет форму пересечения).
Еще одно использование Ctrl x - это расширение *
при вводе команды в оболочке.
Скажите, что у вас есть:
$ ls *
Нажав Ctrl x, а затем * разворачивает *
ко всем элементам в текущем каталоге примерно так:
$ ls dir1 dir2 file1 file2 file3`
Вы также можете обратиться к этой теме в SuperUser для использования, описанного выше.
В Linux/Unix есть сигналы. Мне кажется, что Ctrl + C один (
SIGINT
)...
Если вам нужен список сигналов, доступных в вашей системе, тогда signum.h
может оказаться полезным. Ниже приведено описание Debian 7.3:
/* Signals. */
#define SIGHUP 1 /* Hangup (POSIX). */
#define SIGINT 2 /* Interrupt (ANSI). */
#define SIGQUIT 3 /* Quit (POSIX). */
#define SIGILL 4 /* Illegal instruction (ANSI). */
#define SIGTRAP 5 /* Trace trap (POSIX). */
#define SIGABRT 6 /* Abort (ANSI). */
#define SIGIOT 6 /* IOT trap (4.2 BSD). */
#define SIGBUS 7 /* BUS error (4.2 BSD). */
#define SIGFPE 8 /* Floating-point exception (ANSI). */
#define SIGKILL 9 /* Kill, unblockable (POSIX). */
#define SIGUSR1 10 /* User-defined signal 1 (POSIX). */
#define SIGSEGV 11 /* Segmentation violation (ANSI). */
#define SIGUSR2 12 /* User-defined signal 2 (POSIX). */
#define SIGPIPE 13 /* Broken pipe (POSIX). */
#define SIGALRM 14 /* Alarm clock (POSIX). */
#define SIGTERM 15 /* Termination (ANSI). */
#define SIGSTKFLT 16 /* Stack fault. */
#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */
#define SIGCHLD 17 /* Child status has changed (POSIX). */
#define SIGCONT 18 /* Continue (POSIX). */
#define SIGSTOP 19 /* Stop, unblockable (POSIX). */
#define SIGTSTP 20 /* Keyboard stop (POSIX). */
#define SIGTTIN 21 /* Background read from tty (POSIX). */
#define SIGTTOU 22 /* Background write to tty (POSIX). */
#define SIGURG 23 /* Urgent condition on socket (4.2 BSD). */
#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */
#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */
#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */
#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */
#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
#define SIGPOLL SIGIO /* Pollable event occurred (System V). */
#define SIGIO 29 /* I/O now possible (4.2 BSD). */
#define SIGPWR 30 /* Power failure restart (System V). */
#define SIGSYS 31 /* Bad system call. */
#define SIGUNUSED 31
#define _NSIG 65 /* Biggest signal number + 1
(including real-time signals). */
#define SIGRTMIN (__libc_current_sigrtmin ())
#define SIGRTMAX (__libc_current_sigrtmax ())