teclas teclado para control combinacion comandos atajos abrir linux bash signals signal-handling ctrl

linux - teclado - ¿Qué señal envía ctrl-x cuando se usa en un terminal?



ctrl c en linux (5)

En Linux / Unix hay señales. El Ctrl C uno ( SIGINT ) es obvio para mí. Ahora, en algunas otras aplicaciones, hay señales a través de Ctrl X ? ¿Es eso incluso una señal o genera una secuencia de escape? ¿Hay algo más que pueda usar como algo similar a Ctrl C ( Ctrl V , Ctrl X ...)?

Si alguien tiene una pista, estoy familiarizado con C más que con bash, pero las respuestas en ambos idiomas son muy apreciadas.


En Linux / Unix hay señales. El Ctrl + C uno ( SIGINT ) es obvio para mí ...

Si necesita una lista de señales disponibles en su sistema, entonces signum.h puede ser útil. A continuación es de 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 ())


De Wikipedia

Ctrl x Ctrl e : edita la línea actual en el programa $ EDITOR, o vi si no está definido.

Ctrl x Ctrl r : lee los contenidos del archivo inputrc e incorpora cualquier enlace o asignación de variables que se encuentre allí.

Ctrl x Ctrl u : Deshacer incremental, recordado por separado para cada línea.

Ctrl x Ctrl v : Muestra información de versión sobre la instancia actual de bash.

Ctrl x Ctrl x : alterna el cursor con su posición anterior. (Cx, porque x tiene forma de cruce).

Un uso adicional de Ctrl x es expandir * cuando se escribe un comando en el shell.

Digamos que tienes:

$ ls *

Presionando Ctrl x y luego * ampliará * a todos los elementos en el directorio actual a algo como esto:

$ ls dir1 dir2 file1 file2 file3`

También puede consultar este tema en SuperUser para el uso que describí anteriormente.


El terminal asigna un significado especial a ciertas secuencias de teclas. Esto incluye eliminar un personaje, eliminarlo al comienzo de la línea ( Ctrl U ), ...

Específicamente, cuando el modo local ISIG terminal está habilitado:

  • VINTR (generalmente Ctrl C ) genera un SIGINT (interrumpido por el usuario).
  • VQUIT (generalmente Ctrl / ) genera un SIGQUIT (como SIGINT, pero también dump core).
  • VSUSP (generalmente Ctrl Z ) genera un SIGTSTP (detener por E / S de terminal).
  • VDSUSP (en algunos sistemas, no en Linux) genera un SIGTSTP cuando el programa intenta leerlo.

Lo anterior es configurable. Esto está documentado en la página de termios(3) .


Para obtener todas las asignaciones de caracteres de control de terminal:

stty -a


Posiblemente hay un malentendido. Ctrl C no genera una señal. Es perfectamente posible presionar Ctrl C en cualquier lugar, y no pasarán cosas malas (por ejemplo, en cada editor de texto o procesador de textos, ese es el estándar de facto para "copiar").

Sin embargo, cuando ejecuta un programa en el intérprete de comandos , las pulsaciones de teclas realmente entran en el intérprete de comandos, no en su programa. El intérprete de comandos reenviará (casi) todo a la configuración estándar de su programa y reenviará todo lo que provenga de stdout al terminal u otro proceso o archivo (si usó un conducto o una redirección).

Si el shell ve que presionas Ctrl C , el shell envía la señal de interrupción . Pero eso es realmente algo que hace el caparazón, no algo que sucede mágicamente debido a la combinación de teclas.

Acerca de Ctrl X , probablemente se refería a Ctrl Z. Esto detiene un proceso y el shell genera un número que puede usar con fg para hacer que se ejecute nuevamente.