Bash: pressionando escape 4 vezes

10

Quando eu pressiono o escape 4 vezes em um terminal bash, ele exibe algo assim:

-bash-4.1$
Display all 2837 possibilities? (y or n)
:
!
./
[
[[
]]
{
}
411toppm
a2p
ac
accept
accton
aclocal
aclocal-1.11
acpi_listen

O que é esse recurso e como essas entradas são encontradas? (No segundo esc press, o terminal dá um alerta sonoro.)

    
por flow2k 13.09.2017 / 06:50

2 respostas

10
$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete

Isso mostra que a ligação de chave padrão de Meta + Esc (e Ctrl + i ) no modo de edição de linha de comando do Emacs é a função Readline complete . A tecla Meta é normalmente Esc nos teclados sem uma chave explícita Meta . A documentação Readline para esta função diz

Attempt to perform completion on the text before point. The actual completion performed is application-specific. Bash, for instance, attempts completion treating the text as a variable (if the text begins with $), username (if the text begins with ~), hostname (if the text begins with @), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted. Gdb, on the other hand, allows completion of program functions and variables, and only attempts filename completion under certain circumstances.

Em relação ao seu comentário, resposta do Anthon : Não, pressionar Esc duas vezes não é o mesmo que pressionar Tab geralmente (a menos que esteja em um programa que mapeie ambos para a mesma ação, como o Readline faz por padrão). Entretanto, Ctrl + i é o mesmo que Tab , assim como Ctrl + [ é o mesmo que Esc . Isso significa que você pode fazer a conclusão com Ctrl + [ Ctrl + [ em bash , se desejar, desde que o dobro Esc esteja vinculado ao Readline complete function. Isso é útil se você estiver trabalhando em um terminal VT220, por exemplo, sem a chave Escape:

    
por 13.09.2017 / 08:13
8

Isso é chamado de conclusão de arquivo, e se você não tiver nenhum comando anterior na linha de comando, o bash oferecerá a você para completar todos os comandos do 2837 que ele conhece, tanto internos como os encontrados em seu PATH

São apresentados em ordem de classificação

    
por 13.09.2017 / 06:57

Tags