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