Eu estou falando sobre os atalhos de teclado que você usa na linha de comando / terminal.
Exemplo: Ctrl+ cque encerra o processo, Ctrl+ dque efetua logout, Ctrl+ zque envia o processo para segundo plano ... etc.
Eu testei alguns e descobriu que eles não são nem terminal (ou seja gnome-terminal
, xterm
, konsole
) específica nem shell (ou seja bash
, zsh
) específico, eles ainda trabalho em tty
s.
Então, eu quero saber:
- Quem fornece esses atalhos?
- Como posso listar e modificar / defini-los?
bind -p
listar, assim comohelp bind
para outrosRespostas:
O driver de terminal do kernel (
termios
) interpreta as chaves especiais que podem ser digitadas para enviar um sinal para um processo, enviar final de arquivo, apagar caracteres etc. Esta é a funcionalidade básica do kernel Unix e muito semelhante na maioria das implementações Unix e Linux.O
stty
comando exibe ou define ostermios
caracteres especiais, além de outros parâmetros para o driver da linha de terminal.Invoque
stty -a
para ver os valores atuais dos caracteres especiais e outras "configurações da linha de terminal". Nos exemplos a seguir, você pode ver queintr
é Ctrl+ C,eof
é Ctrl+ D,susp
é Ctrl+ Z. (Excluí outra saída para mostrar apenas as configurações de caracteres especiais):stty -a
caracteres especiais no GNU / Linux:stty -a
caracteres especiais no FreeBSD:Para alterar o valor de um caractere especial, por exemplo, para alterar o caractere de interrupção de Ctrl+ Cpara Ctrl+, Einvoque
stty
assim (^E
são literalmente dois caracteres, o circumflex (^
) seguido pela letraE
):Para mais informações, consulte as páginas de manual de
stty
etermios
. No GNU / Linux, você também pode olhar natty_ioctl
página do manual.Notas:
A
intr
chave ( Ctrl+ Cpor padrão), na verdade, não elimina o processo, mas faz com que o kernel envie um sinal de interrupção (SIGINT
) para todos os processos dentro do grupo de processos. Os processos podem organizar para capturar ou ignorar o sinal, mas a maioria dos processos será encerrada, que é o comportamento padrão.A razão que Ctrl+ dregistra-lo para fora é porque o controlador de linha terminal envia EOF (fim de arquivo) na entrada padrão do shell. O shell sai quando recebe o final do arquivo em sua entrada padrão.
fonte
-a
opção POSIX foi adicionadastty
.stty intr '^E'
isso funciona (conjuntos), mas temporariamente e por apenas tty / terminal atual. Como faço para alterá-lo globalmente e permanentemente?stty
seu $ HOME / .profile ou $ HOME / .bashrc ou algum outro arquivo de inicialização de inicialização do shell.tty
tty
? Talvez isso possa ser uma nova pergunta?De http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
Atalhos de edição de comandos
Atalhos de Recuperação de Comando
Atalhos de controle de comando
Comandos do Bash Bang (!)
O Bash também possui alguns recursos úteis que usam o! (bang) para permitir que você faça coisas descoladas com os comandos do bash .
fonte
^U
questty -a
é definido para o SIGKILL no Linux, a partir do bash? De preferência, sem definir o material da linha de leitura (talvez através de uma terceira chave mod / meta). Suponho que é apenas sombreado pela ligação ctrl + u readline?