[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: RES: [shell-script] listar arquivos dentro de diretorios?
From: |
MrBiTs |
Subject: |
RE: RES: [shell-script] listar arquivos dentro de diretorios? |
Date: |
Tue, 10 May 2005 15:00:46 -0300 |
/*
Li numa apostila do Piter Punk que qnd colocamos um \ antes de comando ele
é ignorado pelo shell, tipo para colocar um $HOME numa frase, poderia ficar:
echo "A variavel \$HOME mostra o conteudo de $HOME"
Então, o \ não deveria ignorar o ; ???
*/
"Ignorar" nao seria bem o termo... Acho que "proteger" seria melhor. Veja
só: a opcao exec do find exige um escopo de comando. Esse escopo é
delimitado pelo ; ( ponto e virgula ). Entretanto, ponto e virgula TAMBÉM é
interpretado pelo shell como um separador de comandos. Voce pode fazer algo
como
$ cd /tmp ; rm -rf orbit* ; cd ~
E cada um dos comandos será executado, como se vc tivesse digitado:
$ cd /tmp [ enter ]
$ rm -rf orbit* [ enter ]
$ cd ~ [ enter ]
Se vc nao "escapa" ou "protege" o ; no final do find, o shell vai pensar que
existe um comando apos o ;, nao vai fechar o escopo de comando e vai falhar.
Entao, o \; no final da opcao exec do comando find PROTEGE o ; de ser
interpretado pelo shell. No seu exemplo, $HOME é uma variavel que, se
utilizada "sem protecao", será interpretada pelo shell. A \ serve para
proteger a STRING $HOME de ser interpretada. Mesmo efeito seria:
$ echo A variavel '$HOME' possui o valor de $HOME
Enquanto que
$ echo A variavel "$HOME" possui o valor de $HOME
Enquanto "$HOME" ou $HOME sao interpretadas pelo shell, '$HOME' nao :)