Vejamos o seu codigo

cat /etc/gentoo-release < <(tr [a-z] [A-Z])

é o mesmo que

cat /etc/gentoo-release < ARQUIVO_QUALQUER

que é 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ão. o cat só lê a entrada padrão em 2
casos:

1) se vc não informa nenhum arquivo como argumento
2) se vc informa um arquivo de nome -

Então isso:
cat  ARQUIVO_QUALQUER | cat /etc/gentoo-release

Equivale a isso

cat /etc/gentoo-release

Agora vamos ver o que é o misterioso ARQUIVO_QUALQUER

Fazer <(tr [a-z] [A-Z]) é o mesmo que <(comando) e vc cria um named
pipe com o resultado desse comando.

ex:
cat -n <(ls)

é a mesma coisa que ls | cat -n  porem o cat, nesse caso, é executado
no shell pai e não num subshell (isso pode ser util em alguma
situação!!).

então, se <( ... ) gera um named pipe, que se comporta como um arquivo
que só pode ser lido uma unica vez, e o conteudo é o resultado do
comando, qual o resultado do comando

 tr [a-z] [A-Z]  ?

Em primeiro lugar, [A-Z] é uma mascara, isto é, se vc tiver um arquivo
com uma unica letra maiscula como nome, vc não 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ão entendi pq A foi repetido aqui... JULIO HELP!

então 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ão, e vai troca-los de acordo com as regras que receber!

porem vc não pode usa-lo dentro de um <() simplesmente pois vc não deu
NADA para o tr na entrada padrão dele.

<(tr opções)  da erro

<(tr opções < arquivo)  funciona
<(cat arquivo | tr opções) tb funciona

Porem o que eu quis dizer é que vc pode economizar todos esse <() e
cats com um unico

tr opcoes < arquivo_entrada > arquivo_saida

facil né?

agora fica a dica para vc usar

tr '[:lower:]' '[:upper:]'

é mais "profissional" ;-) pois vc usa as classes posix

Boa sorte!

2008/7/23 Felipe <[EMAIL PROTECTED]>:
> Bom dia, lista.
>
> Estou executando o seguinte comando:
>
> cat /etc/gentoo-release < <(tr [a-z] [A-Z])
>
> E na realidade o que acontece é que: quando o executo, o terminal
> simplesmente fecha. Pluft, fechou.
>
> Alguem saberia me dizer por qual motivo a bash teve essa reação ?
>
> 



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"

Responder a