Encadenar comandos

ballester.david en gmail.com ballester.david en gmail.com
Mar Jul 10 09:53:29 BST 2007


El mar, 10-07-2007 a las 07:56 +0200, Aitor Calero escribió:

> > primero por favor lee un manual de bash o es grosería es consejo luego
> > independientemente de lo que quieras encadenar lo que necesitas es utilizar
> > tuberias o pipes en ingles
> 
> Gracias por el consejo, pero llevo en la lista más de tres años y me
> he leído muchos manuales de bash, obviamente no todo se aprende
> leyendo de los manuales. Las tuberías / pipes las uso con frecuencia
> para ejemplos como el que dices
> 
> >
> > cat /var/log | grep luis
> 
> pero lo que yo quería hacer no se hace con pipes, eso ya lo probé.
> Probaré con el método de xargs del compañero. Gracias.
> 


Aitor,

Puedes especificar un poco el porqué necesitas editar el resultado del
locate? Quizá haya otra manera de conseguir lo que quieres sin la capa
de 'complicación extra' que supone el querer usar un editor.


Desconozco nano, así que esto hay que tomarlo como unos consejos en
general:

En caso de necesitar lo que pides sí o sí, habría que mirar si nano
acepta entradas directas desde stdin, mirar si nano acepta la
introducción de datos sin informarle previamente de el fichero destino
que se supone será usado para almacenar los datos y los comandos
necesarios para modificar/salvar esos datos ( o cancelar la edición y
salir ). Habrá aplicaciones que mediante la entrada stdin sean capaces
de procesar el churro que les envíes ( datos - texto - + secuencias de
escape que harán que la aplicación realice acciones determinadas con
esos datos ).

Te pongo un ejemplo de redireccionado de stdin ( lee desde teclado )
que es la entrada standard.

He hecho una pequeña prueba, pero como te digo, desconozco nano:


dballester en nebuchadnezzar:~$ ls -l unison.log
-rw------- 1 dballester dballester 273 2006-09-18 21:35 unison.log

dballester en nebuchadnezzar:~$ export PRUEBA=/home/dballester/unison.log
dballester en nebuchadnezzar:~$ echo $PRUEBA
/home/dballester/unison.log

dballester en nebuchadnezzar:~$ nano < `echo $PRUEBA`
Recibido SIGHUP o SIGTERM

Buffer escrito en nano.save
dballester en nebuchadnezzar:~$ cat nano.save 
UNISON started propagating changes at 21:35:14 on 18 Sep 2006 [BGN]
Copying AllianceRelease3May06.pdf
  from /home/dballester/prova
  to /home/dballester/mirrorprova [END] Copying
AllianceRelease3May06.pdf UNISON finished propagating changes at
21:35:14 on 18 Sep 2006
dballester en nebuchadnezzar:~$


En tu caso concreto, el `echo $PRUEBA` lo deberías sustituir por el
comando locate

Como puedes ver, al terminarse el churro de stdin ( el stream del
echo ), nano se ha cerrado y ha grabado el contenido del echo en el
fichero nano.save
El contenido del nano.save es el contenido del echo, hemos actuado igual
que si lo hubiéramos tecleado nosotros mismos, pero más rápido.

Si hay que informar secuencias de escape ( las ^<tecla> que he visto al
probar nano ) habría que concatenarlas al final del stream que quieres
pasarle al editor
( creo que para cada opción deberías antecederla con '\' pero no se si
nano lo identifcará como eso, como opción y no como parte de la cadena
de texto )



D.
-- 
http://dballester.blogspot.com
The Ubuntu Counter Project - user number # 4472
counter.li.org #206389

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://lists.ubuntu.com/archives/ubuntu-es/attachments/20070710/225b4e9d/attachment-0001.htm 


Más información sobre la lista de distribución ubuntu-es