Linux/Unixにはシグナルがあります。の CtrlC 1つ(SIGINT
)は私には明らかです。現在、他のいくつかのアプリケーションでは、 CtrlX?!それはシグナルですか、それともエスケープシーケンスを生成しますか?に似たものとして使用できるものは他にありますか CtrlC ( CtrlV、 CtrlX ...)?
誰かが手がかりを持っている場合、bashよりもCに精通しているが、両方の言語での回答は大歓迎です!
すべての端末制御文字の割り当てを取得するには:
stty -a
誤解がある可能性があります。 CtrlC 信号を生成しません。押すことは完全に可能です CtrlC どこでも、悪いことは起こりません(たとえば、すべてのテキストエディタまたはワードプロセッサで、「コピー」の事実上の標準です)。
ただし、プログラムを実行するとシェル内の場合、キー入力は実際にはプログラムではなくシェルに入ります。シェルは(ほとんど)すべてをプログラムのstdinに転送し、stdoutからのすべてのものを端末または別のプロセスまたはファイル(パイプまたはリダイレクトを使用した場合)に転送します。
シェルがあなたが押すのを見たら CtrlC、そしてシェルは割り込み信号を送信します。しかし、それは実際にはシェルが行うことであり、キーの組み合わせによって魔法のように発生することではありません。
約 CtrlX、あなたはおそらく意味 CtrlZ。これによりプロセスが停止し、シェルはfg
で使用できる番号を出力し、それを再実行します。
端末は特定のキーシーケンスに特別な意味を割り当てます。これには、文字の削除、行の先頭までの削除( CtrlU )、...
具体的には、ターミナルISIG
ローカルモードが有効な場合:
VINTR
(通常 CtrlC)SIGINT
(ユーザーによる割り込み)を生成します。VQUIT
(通常 Ctrl\)SIGQUIT
を生成します(SIGINTと同様ですが、コアもダンプします)。VSUSP
(通常 CtrlZ)SIGTSTP
(端末I/Oで停止)を生成します。VDSUSP
(一部のシステムでは、Linuxではありません)は、プログラムが読み取ろうとするとSIGTSTP
を生成します。上記は設定可能です。これは termios(3) マンページに記載されています。
から ウィキペディア
CtrlxCtrle :$ EDITORプログラムの現在の行を編集します。未定義の場合はviを編集します。
CtrlxCtrlr :inputrcファイルの内容を読み取り、そこにあるバインディングまたは変数の割り当てを組み込みます。
CtrlxCtrlu :増分アンドゥ、各行ごとに個別に記憶されます。
CtrlxCtrlv :bashの現在のインスタンスに関するバージョン情報を表示します。
CtrlxCtrlx :カーソルを古い位置に切り替えます。 (C-x、xには交差形状があるため)。
1つの追加の使用法 Ctrlx シェルでコマンドを入力するときに*
を展開することです。
あなたが持っていると言う:
$ ls *
押す Ctrlx その後 * *
を現在のディレクトリ内のすべてのアイテムに展開し、次のようにします。
$ ls dir1 dir2 file1 file2 file3`
上記の使用方法については、 SuperUserのこのトピック を参照することもできます。
Linux/Unixにはシグナルがあります。の Ctrl+C 1つ(
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 ())