Estoy hablando de los atajos de teclado que usas en la línea de comandos / terminal.
Ejemplo: Ctrl+ cque mata el proceso, Ctrl+ dque cierra la sesión, Ctrl+ zque envía el proceso al fondo ... etc.
He probado algunos y encontré que no son ni terminal (es decir gnome-terminal
, xterm
, konsole
) específico ni cáscara (es decir bash
, zsh
) específico, que incluso trabajo en tty
s.
Entonces, quiero saber:
- ¿Quién proporciona estos atajos?
- ¿Cómo puedo enumerarlos y modificarlos / definirlos?
bind -p
hacer una lista,help bind
para otrosRespuestas:
El controlador de terminal del núcleo (
termios
) interpreta las teclas especiales que se pueden escribir para enviar una señal a un proceso, enviar el final del archivo, borrar caracteres, etc. Esta es la funcionalidad básica del núcleo de Unix y muy similar en la mayoría de las implementaciones de Unix y Linux.El
stty
comando muestra o establece lostermios
caracteres especiales, así como otros parámetros para el controlador de línea de terminal.Invoque
stty -a
para ver los valores actuales de los caracteres especiales y otras "configuraciones de línea de terminal". En los siguientes ejemplos, puede ver queintr
es Ctrl+ C,eof
es Ctrl+ D,susp
es Ctrl+ Z. (He eliminado otra salida para mostrar solo la configuración de caracteres especiales):stty -a
caracteres especiales en GNU / Linux:stty -a
caracteres especiales en FreeBSD:Para cambiar el valor de un carácter especial, por ejemplo, para cambiar el carácter de interrupción de Ctrl+ Ca Ctrl+ Einvocar de
stty
esta manera (^E
es literalmente dos caracteres, el circunflejo (^
) seguido de la letraE
):Para obtener más información, consulte las páginas de manual para
stty
ytermios
. En GNU / Linux también puede mirar latty_ioctl
página de manual.Notas:
La
intr
clave ( Ctrl+ Cpor defecto), en realidad no mata el proceso, pero hace que el núcleo envíe una señal de interrupción (SIGINT
) a todos los procesos dentro del grupo de procesos. Los procesos pueden hacer arreglos para capturar o ignorar la señal, pero la mayoría de los procesos finalizarán, que es el comportamiento predeterminado.La razón por la que Ctrl+ dcierra la sesión es porque el controlador de línea de terminal envía EOF (final del archivo) en la entrada estándar del shell. El shell sale cuando recibe el final del archivo en su entrada estándar.
fuente
-a
se agregó la opción POSIXstty
.stty intr '^E'
funciona (establece) pero temporalmente y solo para el terminal / tty actual. ¿Cómo lo cambio global y permanentemente?stty
en su $ HOME / .profile o $ HOME / .bashrc o algún otro archivo de inicialización de inicio de shell.tty
tty
? Tal vez esa podría ser una nueva pregunta?De http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
Atajos de edición de comandos
Atajos de recuperación de comandos
Atajos de control de comando
Comandos Bash Bang (!)
¡Bash también tiene algunas funciones útiles que usan! (explosión) para permitirle hacer algunas cosas funky con comandos bash .
fuente
^U
, que sestty -a
muestra definido para SIGKILL en Linux, desde bash? Preferiblemente sin definir las cosas de la línea de lectura (quizás a través de un tercer mod / meta key). Supongo que solo está sombreado por el enlace de línea de lectura ctrl + u?