shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script]


From: Julio C. Neves
Subject: Re: [shell-script]
Date: Mon, 14 Jul 2008 20:07:35 -0300

Marlon,
por um acidente de trabalho, enviaram minha resposta incompleta. então aí
vai ela completa:

A sua dúvida (<<<) chama-se here strings e está super bem explicada (em
português) em
http://twiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Here_Strings

A maior parte dos cmds do Unix/Linux aceitam, caso vc não informe a entrada,
os dados pela entrada primária (stdin), ou seja, o teclado, que pode ser
redirecionado por um pipe (qdo vierem dados) ou um < (qdo for arquivo). O
grep se comporta desta maneira e vc pode verificar isso fazendo o seguinte:

$ grep ana
pera
uva
banana
banana

eu não informei a entrada e mandei as frutas direto pelo teclado. Repare que
ele repetiu banana pq casou com ana.

Eu disse que quase todos os cmds aceitam redirecionamento de entrada, mas
alguns como o rm não aceitam por motivo de segurança. Veja:

$ ls ls*
lsof.txt
$ ls ls* | rm
rm: operando faltando
Tente `rm --help' para mais informação.

A sorte é que tem o xargs que quebra este galho. Então eu poderia fazer:

$ ls ls* | xargs rm

E desta forma remover estes arquivos. Maiores detalhes sobre o xars em
português em:
http://twiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Passando_par%E2metros_com_xargs

Enfim, tudo o que disse está muito bem explicado em português nos Papos de
Botequim, que estão em http://twiki.softwarelivre.org/TWikiBar/WebHome
-- 
Abraços,
Julio
*Em setembro estarei dando um treinamento
Shell em Brasília (em 2 fins de semana).
Mais informações: www.tecnologiabr.com.br
Tel: (61) 3354-3162


*
2008/7/14 Julio C. Neves <address@hidden>:

> Fala Marlon,
> A sua dúvida (<<<) chama-se here strings e está super bem explicada (em
> português) em
> http://twiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Here_Strings
> --
> Abraços,
> Julio
> *Em setembro estarei dando um treinamento
> Shell em Brasília (em 2 fins de semana).
> Mais informações: www.tecnologiabr.com.br
> Tel: (61) 3354-3162
> *
> 2008/7/13 Marlon Vagner Reck <address@hidden>:
>
>>
>> Obrigado a todos
>>
>> A parte do && e do grep -qs eu tinha entendido, minha dúvida é como ele
>> conseguiu fazer o grep procurar uma palvra dentro de outra sem esta estar
>> em
>> um arquivo e sim em uma váriavel ou no final de um comando mas com a ajuda
>> do
>> Julio C. Neves eu entendi, agora o que me perturba é o comando do Julio (
>> rindo de mim mesmo por não entender os comandos ):
>>
>> grep -qs $1 <<< "$2" && echo "$1 está contida em $2"
>>
>> a parte que não entendi é o que os " <<< " fazem de diferente de apenas um
>> "
>> < " , as váriaveis não estão todas no mesmo shell ?
>>
>> Em Sunday 13 July 2008 21:18:51 Julio C. Neves escreveu:
>>
>> > Fala Marlon,
>> > a opção -q (quiet) do grep serve para não jogar na stdout a linha em que
>> > existia a cadeia
>> >
>> > $ grep ^root /etc/passwd && echo achei
>> > root:x:0:0:root:/root:/bin/bash
>> > achei
>> > $ grep -q ^root /etc/passwd && echo achei
>> > achei
>> >
>> > a opção -s é para não mandar erro para a saída caso vc não tenha direito
>> de
>> > leitura ou o arquivo não exista (o grep não dá erro qdo não encontra a
>> > cadeia pesquisada). Veja:
>> >
>> > $ grep julio nãoexiste
>> > grep: nãoexiste: Arquivo ou diretório inexistente
>> > $ grep -s julio nãoexiste
>> > $
>> >
>> > Então a opção -qs significa silêncio total e stdout e stderr.
>> Experimente
>> > tb fazer assim:
>> >
>> > # passando parâmetros para o shell corrente
>> > $ set - ana banana
>> > # Será que funcionou?
>> > $ echo $0
>> > bash
>> > $ echo $1
>> > ana
>> > $ echo $2
>> > banana
>> > # Blz! Então vamos ao que interessa
>> > $ grep -qs $1 <<< "$2" && echo "$1 está contida em $2"
>> > ana está contida em banana
>> >
>> > Assim vc escreve menos e é um pouquinho mais rápido pq não tem pipe para
>> > fazer fork do shell
>> > --
>> > Abraços,
>> > Julio
>> > Em setembro estarei dando um treinamento
>> > Shell em Brasília (em 2 fins de semana).
>> > Mais informações: www.tecnologiabr.com.br
>> > Tel: (61) 3354-3162
>> >
>> > 2008/7/13 Marlon Vagner Reck <address@hidden<marlon_mca%40yahoo.com.br>
>> >:
>> > > Amigos
>> > >
>> > > Comprei o livro "Shell script profissional " do Aurélio ( muito bom
>> por
>> > > sinal)
>> > > e me deparei com a seguinte linha:
>> > >
>> > > echo $2 | grep -qs $1 && echo "$1 está contida em $2"
>> > >
>> > > que pesquisa dentro de uma palavra a existência de outra, exemplo ana
>> > > dentro
>> > > de banana. Só que eu não consegui entender de o funcionamento dela, o
>> > > echo mostra a váriavel 2 digamos "banana" e joga no sub-shell para que
>> o
>> > > grep pesquise a váriavel 1 digamos "ana" dentro da palavra "banana",
>> qual
>> > > a mecânica da coisa a lógica?
>> > >
>> > > Obrigado a todos
>> > > Marlon
>>
>>  
>>
>
>
>
> --
> Abraços,
> Julio
> Em setembro estarei dando um treinamento
> Shell em Brasília (em 2 fins de semana).
> Mais informações: www.tecnologiabr.com.br
> Tel: (61) 3354-3162
>



-- 
Abraços,
Julio
Em setembro estarei dando um treinamento
Shell em Brasília (em 2 fins de semana).
Mais informações: www.tecnologiabr.com.br
Tel: (61) 3354-3162


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]