----- Mensaje original ----- > De: fernando sainz <fernandojose.sa...@gmail.com> > Para: Julian Perconti <vh1...@yahoo.com.ar> > CC: > Enviado: jueves, 20 de junio de 2013 14:15 > Asunto: Re: [OT] Sobre script bash > > El día 20 de junio de 2013 19:09, Julian Perconti > <vh1...@yahoo.com.ar> escribió: >> >> >> ----- Mensaje original ----- >>> De: fernando sainz <fernandojose.sa...@gmail.com> >>> Para: "debian-user-spanish@lists.debian.org" > <debian-user-spanish@lists.debian.org> >>> CC: >>> Enviado: jueves, 20 de junio de 2013 13:26 >>> Asunto: Re: [OT] Sobre script bash >>> >>> El día 20 de junio de 2013 18:19, Julian Perconti >>> <vh1...@yahoo.com.ar> escribió: >>>> ----- Mensaje original ----- >>>>> De: fernando sainz <fernandojose.sa...@gmail.com> >>>>> Para: "debian-user-spanish@lists.debian.org" >>> <debian-user-spanish@lists.debian.org> >>>>> CC: >>>>> Enviado: jueves, 20 de junio de 2013 13:09 >>>>> Asunto: Re: [OT] Sobre script bash >>>>> >>>>> El día 20 de junio de 2013 17:55, Julian Perconti >>>>> <vh1...@yahoo.com.ar> escribió: >>>>>> ----- Mensaje original ----- >>>>>>> De: fernando sainz > <fernandojose.sa...@gmail.com> >>>>>>> Para: Julian Perconti <vh1...@yahoo.com.ar> >>>>>>> CC: >>>>>>> Enviado: jueves, 20 de junio de 2013 12:35 >>>>>>> Asunto: Re: [OT] Sobre script bash >>>>>>> >>>>>>> El día 20 de junio de 2013 16:46, Julian Perconti >>>>>>> <vh1...@yahoo.com.ar> escribió: >>>>>>>> Saludos, >>>>>>>> Tengo el siguiente script basico para migrar > permisos: >>>>>>>> # BOF >>>>>>>> #!/bin/bash >>>>>>>> j=0 >>>>>>>> echo "ID del GRUPO a buscar:" >>>>>>>> read gida >>>>>>>> echo "ID del GRUPO por el cual reemplazar a > los que >>>>>>>> se encuentren:" >>>>>>>> read gidn >>>>>>>> for i in `find $pwd -gid $gida -print0 | xargs > -0 chgrp >>>>>>> >>>>>>> ¿Este salto de linea lo ha hecho el correo supongo? > así >>> estaría mal. >>>>>>> >>>>>>> veo algo extraño en el xargs, por defecto recibe cada > valor >>> devuelto >>>>>>> por el find, no entiendo por que le pasas $i >>>>>>> >>>>>>> S2. >>>>>>> >>>>>>>> $gidn "$i"`; do >>>>>>>> let j=j+1 >>>>>>>> done >>>>>>>> echo $j 'reemplazos' >>>>>>>> #EOF >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> En si el script, funciona bien, es decir, los > permisos se >>>>>>>> cambian según los id proporcionados; el problema > es que >>> me arroja >>>>> el >>>>>>> siguiente >>>>>>>> error: >>>>>>>> chgrp: cannot access `': No such file or > directory >>>>>>>> Y el contador me da siempre 0. >>>>>>>> Probé de escribirlo de formas distintas, por > ejemplo >>>>>>>> meter la salida en un tmp y luego cat tmp, etc.. >>>>>>>> Alguna idea? >>>>>>>> Aclaro que no soy programador ni mucho menos, > asique toda >>>>>>>> sugerencia/critica/mejora es bienvenida! >>>>>>>> Gracias de antemano! >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> To UNSUBSCRIBE, email to >>>>> debian-user-spanish-requ...@lists.debian.org >>>>>>>> with a subject of "unsubscribe". > Trouble? >>> Contact >>>>>>> listmas...@lists.debian.org >>>>>>>> Archive: >>>>>>> >>>>> >>> > http://lists.debian.org/1371739576.91232.yahoomail...@web160205.mail.bf1.yahoo.com >>>>>>>> >>>>>>> >>>>>> >>>>>> Respondo a la lista: >>>>>> >>>>>> Bueno efectivamente le saque "$i" y el error > desapareció >>> pero >>>>> sigue apareciendo otro: >>>>>> >>>>>> chgrp: cannot dereference >>>>> `./.pulse/0494f201138428357ab0646c51ada1e2-runtime': No > such file >>> or >>>>> directory >>>>>> >>>>>> Y la salida de sh -x: (antes de quitarle $i) >>>>>> >>>>>> root@debian:/home/julian# sh -x migraperm >>>>>> + j=0 >>>>>> + echo ID del GRUPO a buscar: >>>>>> ID del GRUPO a buscar: >>>>>> + read gida >>>>>> 1000 >>>>>> + echo ID del GRUPO por el cual reemplazar a los que se >>> encuentren: >>>>>> ID del GRUPO por el cual reemplazar a los que se > encuentren: >>>>>> + read gidn >>>>>> 0 >>>>>> + find -gid 1000 -print0 >>>>>> + xargs -0 chgrp 0 >>>>>> chgrp: cannot access `': No such file or directory >>>>>> chgrp: cannot dereference >>>>> `./.pulse/0494f201138428357ab0646c51ada1e2-runtime': No > such file >>> or >>>>> directory >>>>>> + echo 0 reemplazos >>>>>> 0 reemplazos >>>>>> >>>>>> Sin embargo algo esta mal hecho y no me doy cuenta porque > el >>> contador sigue >>>>> dando 0: >>>>>> >>>>>> root@debian:/home/julian# ./migraperm >>>>>> ID del GRUPO a buscar: >>>>>> 0 >>>>>> ID del GRUPO por el cual reemplazar a los que se > encuentren: >>>>>> 1000 >>>>>> 0 reemplazos >>>>>> >>>>>> El script quedó asi: >>>>>> >>>>>> #!/bin/bash >>>>>> j=0 >>>>>> echo "ID del GRUPO a buscar:" >>>>>> read gida >>>>>> echo "ID del GRUPO por el cual reemplazar a los que > se >>>>> encuentren:" >>>>>> read gidn >>>>>> >>>>>> for i in `find $pwd -gid $gida -print0 | xargs -0 chgrp > $gidn`; >>>>>> do >>>>>> let j=j+1 >>>>>> done >>>>>> echo $j 'reemplazos' >>>>>> >>>>>> Muchas gracias por sus prontas respuestas! >>>>>> >>>>> >>>>> Creo que es un error de concepto. >>>>> la salida del `find.....| xargs ...` va a estar vacía. Prueba > a >>> ejecutarlo solo. >>>> >>>> Es verdad Fernando, me estaba empezando a dar cuenta, > aparentemente el let >>> no se esta ejecutando porque el contador es 0 (creo que es eso) >>>> >>>> La salida de ejecutarlo solo devuelvo solo una línea de error de > no 'No >>> such file or directory'. >>>> >>>> Voy a buscar la forma de contar los elemento separadamente; de > todas formas >>> no es algo critico (el script ya cumple su función), solo me entusiasme > un poco >>> y quería imprimir en pantalla la cantidad de elementos modifiados. >>>> >>>>> >>>>> S2. >>>> >>>> Saludos! >>>> >>> >>> >>> Tu problema es que mezclas dos cosas, si se usa un pipe con xargs es >>> precisamente para evitar el bucle for. >> >> No se muy entendido del tema, pero yo xargs (buscando en google) lo use por > el tema de los archivos que contienen espacios. Este script lo estoy > corriendo > en un entorno de prueba donde casualemente no hay archios con espacios. >> >>> >>> Si usas el bucle for, quita el xargs y pon el chgp en el cuerpo del > for. >>> S2. >> >> Y el los ficheros con espacios como los manipulo? >> >> Saludos! > > Poniendo la variable entre comillas, no recuerdo si dobles o > sencillas, o las dos valen: chgrp "$a" "$i" > > S2. > Gracias Camaleón y Fernando. Si no hice algo mal, creo que no funciona: ID del GRUPO a buscar: 0 ID del GRUPO por el cual reemplazar a los que se encuentren: 1000 chgrp: cannot access `./prueba': No such file or directory chgrp: cannot access `espacio': No such file or directory chgrp: cannot access `./Desktop/Untitled': No such file or directory chgrp: cannot access `Document~': No such file or directory chgrp: cannot access `./espacio': No such file or directory chgrp: cannot access `o': No such file or directory chgrp: cannot access `o': No such file or directory 222 reemplazos
ls -l ./ (...) -rw-r--r-- 1 root root 0 Jun 20 10:47 espacio o o -rw-r--r-- 1 root root 0 Jun 20 10:29 prueba espacio El script quedo así: #!/bin/bash j=0 echo "ID del GRUPO a buscar:" read gida echo "ID del GRUPO por el cual reemplazar a los que se encuentren:" read gidn for i in `find $pwd -type f -gid $gida`; do chgrp "$gidn" "$i" let j=j+1 done echo $j 'reemplazos' También probé con chgrp $gidn "$i", es decir sin encerrar con comillas a la variable 'gidn' y tambien $i encerrado con comillas simples. Que puede ser? -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/1371751364.21858.yahoomail...@web160206.mail.bf1.yahoo.com