Como determinados comandos alteram os critérios de preenchimento automático com guias?

2

Suponha que eu esteja em um diretório como este:

:mydirectory$ ls

foo.txt

Esse único arquivo. Se eu digitar um comando como cat e, em seguida, eu abro para autocompletar (suponha que o caractere is é realmente a posição do cursor e não um caractere para esse propósito) ...

:mydirectory$ cat ‸

muda para (novamente: o ‸ aqui não é um caractere, mas o cursor) ...

:mydirectory$ cat foo.txt ‸

Mas não é o mesmo para um comando como este:

:mydirectory$ tar ‸

Ao tabular, vejo as opções para autocompletar:

A c d r t u x

E quando escrever algo como:

:mydirectory$ tar -zxvf ‸

Então nada é autocompletado.

A minha pergunta é: como muitos comandos alteram as regras de autocomplete no bash?

    
por Luis Masuelli 22.07.2016 / 20:10

1 resposta

4

Os comandos não alteram as regras de preenchimento automático. As regras de autocomplete são definidas para o shell usando scripts e funções e carregadas quando o shell é iniciado. Eu vou usar bash como exemplo, já que estou familiarizado com isso mais do que as outras camadas.

As regras para preenchimento automático em bash são definidas no script em /etc/bash_completion e complementadas por scripts adicionais no diretório /etc/bash_completion.d/ . Essas regras são originadas em bash quando você faz o login.

bash tem um comando complete que permite definir facilmente as regras para conclusão. Para ver todas as regras já definidas, você pode executar complete -p .

Agora, a maioria das distros já definirá essas regras para você. Portanto, quando você digita tar <TAB> , já existe uma regra definida pela sua distro para mostrar o arquivo que corresponde ao padrão *.tar* e as opções do comando tar como sugestões de preenchimento automático. É por isso que quando você digita tar , ele te dá as opções A c d r t u x , mas para tar -zvxf , não tem, pois não pode haver mais opções depois disso. Agora, se você sair com um arquivo .tar.gz nesse diretório, ele sugerirá que, como opção de preenchimento automático, a próxima coisa após a opção f seja um arquivo tar.

O /etc/bash_completion padrão não fornece opções como sugestões e não filtra os tipos de arquivo. Nesse caso, você também verá o arquivo foo.txt como uma sugestão para tar .

Você pode ler sobre como criar suas próprias regras aqui - link e link

    
por 22.07.2016 / 20:42