From: |
Unknown |
>From address@hidden Wed Jul 23 08:39:28 2008
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
X-Received: (qmail 8184 invoked from network); 23 Jul 2008 15:39:27 -0000
X-Received: from unknown (66.218.67.96)
by m48.grp.scd.yahoo.com with QMQP; 23 Jul 2008 15:39:27 -0000
X-Received: from unknown (HELO ug-out-1314.google.com) (66.249.92.170)
by mta17.grp.scd.yahoo.com with SMTP; 23 Jul 2008 15:39:26 -0000
X-Received: by ug-out-1314.google.com with SMTP id a2so823884ugf.27
for <address@hidden>; Wed, 23 Jul 2008 08:39:25 -0700 (PDT)
X-Received: by 10.103.239.5 with SMTP id q5mr107203mur.58.1216827565282;
Wed, 23 Jul 2008 08:39:25 -0700 (PDT)
X-Received: by 10.102.247.18 with HTTP; Wed, 23 Jul 2008 08:39:25 -0700 (PDT)
Message-ID: <address@hidden>
Date: Wed, 23 Jul 2008 12:39:25 -0300
To: address@hidden
In-Reply-To: <address@hidden>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
References: <address@hidden>
X-Originating-IP: 66.249.92.170
X-eGroups-Msg-Info: 1:12:0:0:0
From: "Tiago Barcellos Peczenyj" <address@hidden>
Subject: =?ISO-8859-1?Q?Re:_[shell-script]_Bash_simplesme?=
=?ISO-8859-1?Q?nte_fecha_em_fun=E7=E3o_de_um_comando.?=
X-Yahoo-Group-Post: member; u=204465305;
y=6g85D2ECyYUTyBpJq9gh57b9LUeiHr56JuGkBefpHO0nQXbkNow
X-Yahoo-Profile: grande_uosh
Vejamos o seu codigo
cat /etc/gentoo-release < <(tr [a-z] [A-Z])
=E9 o mesmo que
cat /etc/gentoo-release < ARQUIVO_QUALQUER
que =E9 o mesmo que
cat ARQUIVO_QUALQUER | cat /etc/gentoo-release
o q vc esta fazendo ai: vc esta executando o programa cat com um
argumento, um nome de arquivo e informando o conteudo desse
ARQUIVO_QUALQUER na entrada padr=E3o. o cat s=F3 l=EA a entrada padr=E3o em=
2
casos:
1) se vc n=E3o informa nenhum arquivo como argumento
2) se vc informa um arquivo de nome -
Ent=E3o isso:
cat ARQUIVO_QUALQUER | cat /etc/gentoo-release
Equivale a isso
cat /etc/gentoo-release
Agora vamos ver o que =E9 o misterioso ARQUIVO_QUALQUER
Fazer <(tr [a-z] [A-Z]) =E9 o mesmo que <(comando) e vc cria um named
pipe com o resultado desse comando.
ex:
cat -n <(ls)
=E9 a mesma coisa que ls | cat -n porem o cat, nesse caso, =E9 executado
no shell pai e n=E3o num subshell (isso pode ser util em alguma
situa=E7=E3o!!).
ent=E3o, se <( ... ) gera um named pipe, que se comporta como um arquivo
que s=F3 pode ser lido uma unica vez, e o conteudo =E9 o resultado do
comando, qual o resultado do comando
tr [a-z] [A-Z] ?
Em primeiro lugar, [A-Z] =E9 uma mascara, isto =E9, se vc tiver um arquivo
com uma unica letra maiscula como nome, vc n=E3o vai ter [A-Z] e sim vai
ter aquela letra
$ echo tr [a-z] [A-Z]
tr [a-z] [A-Z]
$ touch a A # crio arquivos 'a' e 'A'
$ echo tr [a-z] [A-Z]
tr a A A # tb n=E3o entendi pq A foi repetido aqui... JULIO HELP!
ent=E3o o certo eh
tr '[a-z]' '[A-Z]' assim os argumentos ficam protegidos!!
ok, mas o que faz esse tr?? o tr espera uma sequencia de caracteres na
entrada padr=E3o, e vai troca-los de acordo com as regras que receber!
porem vc n=E3o pode usa-lo dentro de um <() simplesmente pois vc n=E3o deu
NADA para o tr na entrada padr=E3o dele.
<(tr op=E7=F5es) da erro
<(tr op=E7=F5es < arquivo) funciona
<(cat arquivo | tr op=E7=F5es) tb funciona
Porem o que eu quis dizer =E9 que vc pode economizar todos esse <() e
cats com um unico
tr opcoes < arquivo_entrada > arquivo_saida
facil n=E9?
agora fica a dica para vc usar
tr '[:lower:]' '[:upper:]'
=E9 mais "profissional" ;-) pois vc usa as classes posix
Boa sorte!
2008/7/23 Felipe <address@hidden>:
> Bom dia, lista.
>
> Estou executando o seguinte comando:
>
> cat /etc/gentoo-release < <(tr [a-z] [A-Z])
>
> E na realidade o que acontece =E9 que: quando o executo, o terminal
> simplesmente fecha. Pluft, fechou.
>
> Alguem saberia me dizer por qual motivo a bash teve essa rea=E7=E3o ?
>
>=20
--=20
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"
[Prev in Thread] |
Current Thread |
[Next in Thread] |