Quais são os atalhos de teclado para a linha de comando?

7

Estou falando sobre os atalhos de teclado que você usa na linha de comando / terminal.

Exemplo: Ctrl + c que mata o processo, Ctrl + d que logout, Ctrl + z que envia o processo para o segundo plano ... etc.

Eu testei alguns e descobri que eles não são específicos (ou seja, gnome-terminal , xterm , konsole ) específicos nem shell (ou seja, bash , zsh ) específicos, eles até trabalham em tty s.

Então, eu quero saber:

  • Quem fornece esses atalhos?
  • Como posso listar e modificar / defini-los?
por Pandya 16.01.2016 / 12:17

2 respostas

8

O driver de terminal do kernel ( termios ) interpreta as teclas 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 similar na maioria dos Unix e implementações Linux.

O comando stty exibe ou define os caracteres especiais termios , 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 de linha de terminal". Nos exemplos a seguir, você pode ver que intr é Ctrl + C , eof é Ctrl + D , susp é Ctrl + Z . (Eu deletei outra saída para mostrar apenas as configurações especiais de caracteres):

stty -a caracteres especiais no GNU / Linux:

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

stty -a caracteres especiais no FreeBSD:

cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
        erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;

Para alterar o valor de um caractere especial, por exemplo, para alterar o caractere de interrupção de Ctrl + C para Ctrl + E invoque stty assim ( ^E é literalmente dois caracteres, o circunflexo ( ^ ) seguido da letra E ):

stty intr '^E'

Para mais informações, consulte as man pages de stty e termios . No GNU / Linux, você também pode ver a página tty_ioctl man.

Notas:

A tecla intr ( Ctrl + C por padrão), na verdade, não mata 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 terminará, que é o comportamento padrão.

O motivo pelo qual Ctrl + d desconecta você é porque o driver da linha de 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.

    
por 16.01.2016 / 17:52
5

De link

Atalhos de edição de comandos

  • Ctrl + a - vai para o início da linha de comando
  • Ctrl + e - vai até o final da linha de comando
  • Ctrl + k - excluir do cursor até o final da linha de comando
  • Ctrl + u - apaga do cursor para o início da linha de comando
  • Ctrl + w - excluir do cursor para o início da palavra (ou seja, excluir uma palavra para trás)
  • Ctrl + y - cola palavra ou texto que foi cortado usando um dos atalhos de exclusão (como o acima) depois do cursor
  • Ctrl + xx - move entre o início da linha de comando e a posição atual do cursor (e vice-versa)
  • Alt + b - retrocede uma palavra (ou vai para o início da palavra em que o cursor está atualmente)
  • Alt + f - avançar uma palavra (ou ir até o final da palavra em que o cursor está no momento)
  • Alt + d - exclui para o final da palavra que começa no cursor (palavra inteira se o cursor estiver no início da palavra)
  • Alt + c - capitaliza para o final da palavra que começa no cursor (palavra inteira se o cursor estiver no início da palavra)
  • Alt + u - transforma maiúsculas do cursor até o final da palavra
  • Alt + l - faz letras minúsculas do cursor até o final da palavra
  • Alt + t - troca a palavra atual com a anterior
  • Ctrl + f - avançar um caractere
  • Ctrl + b - retrocede um caractere
  • Ctrl + d - apaga o caractere sob o cursor
  • Ctrl + h - exclui o caractere antes do cursor
  • Ctrl + t - troca o caractere sob o cursor pelo anterior

Atalhos de chamada de comando

  • Ctrl + r - pesquisa o histórico de trás para frente
  • Ctrl + g - escape do modo de pesquisa de histórico
  • Ctrl + p - comando anterior no histórico (por exemplo, voltar ao histórico de comandos)
  • Ctrl + n - próximo comando no histórico (por exemplo, avançar no histórico de comandos)
  • Alt +. - use a última palavra do comando anterior

Atalhos de controle de comando

  • Ctrl + l - limpe a tela
  • Ctrl + s - interrompe a saída para a tela (para comandos verbosos de longa execução)
  • Ctrl + q - permite a saída para a tela (se anteriormente parou de usar o comando acima)
  • Ctrl + c - terminar o comando
  • Ctrl + z - suspender / parar o comando

Comandos Bash Bang (!)

Bash também tem alguns recursos úteis que usam o! (bang) para permitir que você faça coisas divertidas com os comandos bash .

  • !! - execute o último comando
  • ! blah - execute o comando mais recente que começa com "blah" (por exemplo! ls)
  • ! blah: p - imprime o comando que ! blah executaria (também o adiciona como o comando mais recente no histórico de comandos)
  • ! $ - a última palavra do comando anterior (o mesmo que Alt +. )
  • ! $: p - imprima a palavra que ! $ substituiria
  • ! * - o comando anterior, exceto a última palavra (por exemplo, se você digitar ' encontrar some_file.txt / ', então ! * fornecerá você encontra some_file.txt ')
  • ! *: p - imprima o que ! * substituiria
por 16.01.2016 / 13:46