[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]
- Re: [shell-script] listar arquivos grandes, (continued)
- Re: [shell-script] listar arquivos grandes, Alex, 2008/07/13
- Re: [shell-script] listar arquivos grandes, Julio C. Neves, 2008/07/13
- [shell-script], Marlon Vagner Reck, 2008/07/13
- Re: [shell-script], Julio C. Neves, 2008/07/13
- Re: [shell-script], Marlon Vagner Reck, 2008/07/13
- Re: [shell-script], Julio C. Neves, 2008/07/14
- Re: [shell-script], Guilherme Gall, 2008/07/14
- Re: [shell-script], Julio C. Neves, 2008/07/14
- Re: [shell-script],
Julio C. Neves <=
- Re: [shell-script], Tiago Barcellos Peczenyj, 2008/07/15
- [shell-script] Agradecendo, marlon_mca, 2008/07/18
- Re: [shell-script] listar arquivos grandes, alexandre, 2008/07/15