On Wed, 1 Mar 2006 11:38am -0300, Eriberto wrote: > lua:~# ls > mala mela taco testa teste todos > > lua:~# ls | grep te > testa teste > > lua:~# ls | grep te* > > O último comanado não mostrou nada. Ele não deveria interpretar como o > "e", aparecendo de 0 a n vezes, e mostrar "taco testa teste todos"???
O que está acontecendo é que o shell vai expandir (globbing) esse teu te*. O `ls' faz um teste para ver se ele está enviando os resultados para um terminal ou não. Se não está, ele faz algumas modificações no compotamento dele por opções implícitas (por exemplo, umas das opções implícitas adicionadas é -1). Exemplo: $ ls mala mela taco testa teste todos $ ls | cat -n 1 mala 2 mela 3 taco 4 testa 5 teste 6 todos O teu te* vai expandir para "testa teste": $ echo te* testa teste E, portanto, teu comando final é este, substituindo o glob (te*): ls | grep testa teste Não tem nenhum arquivo com o nome "testa teste", e por isso não mostra nada. A minha única curiosidade é entender o motivo de tu precisar estar usando grep para procurar os arquivos. Em geral é interessante, melhor e mais limpo usar só glob. Quanto mais flexível é o globbing do shell, mais interessante, útil e poderoso é o ambiente. Por exemplo: $ arquivos=(te*) Ou $ for in te*; { ... } OBS: E a interpretação não é de "`e' zero ou mais". Há diferenças entre expressões regulares e globbing. Em um glob o teu "te*" significa apenas o literal "te" seguido de qualquer coisa. -- Felipe Kellermann --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [EMAIL PROTECTED] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html