5. Auto Completar na Linha de Comando

A função de completar é muito útil e todos os shells modernos (incluindo o bash) tem ela embutida. A sua finalidade é que o usuário tenha o mínimo de trabalho possível. A melhor maneira de ilustrar a função de completar é dando um exemplo.

5.1. Exemplo

Imagine que seu diretório pessoa contém um arquivo com o nome arquivo_com_nome_muito_grande_impossivel_de_digitar e você quer ver seu conteúdo. Suponha então, que você tenha no mesmo diretório um outro arquivo chamado arquivo_texto. Você está no seu diretório pessoal, então digite a seguinte seqüência de comandos:

$ less ar<TAB>

(i.e., digite less ar e então pressione a tecla Tab). O shell irá expandir a linha de comando para você:

$ less arquivo_

e também dar-lhe uma lista das possíveis escolhas (na sua configuração padrão, que pode ser modificada). Então, digite a seguinte seqüência de teclas:

$ less arquivo_c<TAB>

e o shell irá expandir a linha de comando para dar o resultado que você espera:

$ less arquivo_com_nome_muito_grande_impossivel_de_digitar

Tudo o que você precisa é então pressionar Enter para confirmar e ler o arquivo.

[Dica]Dica

Use the q key to exit the file viewer.

5.2. Outros Métodos de Completar

A tecla Tab não é a única maneira de ativar a função completar, embora seja a maneira mais comum. Como regra geral, a palavra a ser completada deve ser um nome de comando para a primeira palavra na linha de comandos (nsl<TAB> retornará nslookup), e um nome de arquivo para todas as outras posições, a não ser que uma palavra seja precedida por um caractere “magico” como ~, @ ou $, casos em que o shell irá tentar completar com um nome de usuário, um nome de máquina ou uma variável de ambiente respectivamente.[17]. Existe também um caractere mágico para completar um nome de arquivo (/) e um comando para recuperar um comando do histórico (!).

As outras duas maneiras de ativar a função de completar são as seqüências Esc-<x> e Ctrl-X-<x>, onde <x> é um dos caracteres mágicos já mencionados. Esc-<x> irá tentar retornar com uma única completude. Se falhar, irá completar a palavra com a maior subpalavra na lista de opções. Um beep indica que a opção não é única, ou simplesmente que não existe nenhuma opção correspondente. A seqüência Ctrl-X-<x> mostra a lista de possíveis escolhas sem tentar nenhuma das possibilidades. Pressionar a tecla Tab é semelhante a pressionar sucessivamente as seqüências de teclas Esc-<x> e Ctrl-X-<x>, onde o caractere mágico depende do contexto.

Thus, one way to see all the environment variables defined is to type the sequence Ctrl-X-$ on a blank line. Another example: if you want to see the man page for the nslookup command, you simply type man nsl then Esc-!, and the shell will automatically complete the command to man nslookup.



[17] Lembre-se: o sistema UNIX® diferencia caixa alta e caixa baixa. As variáveis de ambiente HOME e home não são a mesma variável.