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.
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.
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.