bash: mail addr <( echo '..' )

=?X-UNKNOWN?Q?Jos=E9_Angel_Rodr=EDguez_Leyva?= jar en villazul.ltu.sld.cu
Lun Abr 19 15:51:54 CLT 2004


On Mon, 19 Apr 2004, Horst von Brand wrote:

> > pero no
> > 
> > mail -s "Asunto..." addr <( sed s/expr1/expr2/ archivo )
> 
> comando < (comando), nunca ha sido legal. El poner (comando) hace que el
> comando corra en un shell aparte (buen truco para hacer tonteras como:

No sabia que hacer esto estuviera tan mal, no he visto hasta ahora alguna
razon que desaconseje usar ( ) en bash. Y si buenos ejemplos de casos
donde el pipe "|" no es suficiente. Ejemplo:

comm -3 <(comando) <(comando)

Y mas "atroz" aun:

bash <(comando)

De hecho los he visto/usado en combinacion.

> > Reconozco que mail, a diferencia de otros comandos, funciona
> > interactivamente.
> 
> No. Al igual que la inmensa mayoria de los comandos, lee su entrada
> standard. Le importa una pepa de aji seca si viene del teclado, de un
> archivo, o es la salida de otro comando. Un programa _puede_ determinar eso
> si quiere, la inmensa mayoria no se da el trabajo (porque es
> contraproducente). Muchos comandos leen los archivos dados como argumentos,
> de no haberlos leen su entrada standard (p.ej. cat(1), more(1), less(1),
> wc(1), grep(1), ...), eso es parte de la cultura Unix y construir pipelines
> de filtros simples.
> 

Poco depues de enviar el mensaje me di cuenta que una diferencia notable
del mail es que no acepta un archivo de entrada y solo lee su entrada
estandar, a diferencia de otros comandos, como los que pone ud. de ejemplo


> >                   Por eso se queda esperando por un eof o algo por el
> > estilo para terminar la entrada.
> 
> Que en caso de escribir tu directamente deberas indicar; si viene de un
> archivo u otro comando, en cuanto se acaba la entrada llega solo.
> 
> >                                  Pero en el primer ejemplo funciona la
> > redireccion y termina mail, ?por qu'e cosa se queda esperando en el
> > segundo? Intente terminar con algunos caracteres (nulo, ^D), pero quizas
> > no lo este haciendo correctamente.
> 
> Exactamente que es lo que no te funciona?

La verdad es que me basta usar una tuberia en este ejemplo, como dije es 
solo una curiosidad. Mi nivel actual en el linux es de semiprincipiante o 
quizas un poquito mas; ya no me basta saber de comandos y configurar 
servicios, me gusta llegar al "como funciona", y esto me introdujo ruido 
en el sistema.

saludos

jar



Más información sobre la lista de distribución Linux