<Anterior | Conteúdo | Próxima>
Expansão
Cada vez que digitamos um comando e pressionamos a tecla Enter, bater executa vários processos sobre o texto antes de executar nosso comando. Vimos alguns casos de como uma sequência de caracteres simples, por exemplo “*”, pode ter muito significado para o shell. O processo que faz isso acontecer é chamado expansão. Com a expansão, entramos em algo e ele se expande em outra coisa antes que a casca atue sobre ele. Para demonstrar o que queremos dizer com isso, vamos dar uma olhada no eco comando. eco é um shell embutido que executa uma tarefa muito simples. Ele imprime seus argumentos de texto na saída padrão:
[me @ linuxbox ~] $ echo, isso é um teste
isto é um teste
[me @ linuxbox ~] $ echo, isso é um teste
isto é um teste
Isso é muito simples. Qualquer argumento passado para eco é exibido. Vamos tentar outro exemplo:
[me @ linuxbox ~] $ eco *
Documentos da área de trabalho ls-output.txt Música Imagens Modelos públicos Vídeos
[me @ linuxbox ~] $ eco *
Documentos da área de trabalho ls-output.txt Música Imagens Modelos públicos Vídeos
Então, o que aconteceu? Por que não eco imprimir "*"? Como lembramos de nosso trabalho com curingas, o caractere “*” significa corresponder a qualquer caractere em um nome de arquivo, mas o que não vimos em nossa discussão original era como o shell faz isso. A resposta simples é que o shell expande o “*” em outra coisa (neste caso, os nomes dos arquivos no diretório de trabalho atual) antes do eco comando é executado. Quando a tecla enter é
pressionado, o shell expande automaticamente quaisquer caracteres qualificados na linha de comando antes que o comando seja executado, então o eco o comando nunca viu o “*”, apenas seu resultado expandido. Sabendo disso, podemos ver que eco se comportou conforme o esperado.