Article View: es.comp.os.linux.programacion
Article #7065Re: ayuda con script...
From: J.A. Gutierrez
Date: Thu, 03 Apr 2003 09:16
Date: Thu, 03 Apr 2003 09:16
69 lines
3426 bytes
3426 bytes
Edu <eduNOSPAM@fonocom.es> wrote:
:>> test `ls -1f | wc -l` -ne 2 && echo no vacio || echo vacio
:>
:>> rmdir $dir && ( echo vacio; mkdir $dir ) || echo no vacio
: Hola
: En el segundo caso si la ruta no existe te dir�a que est� vacio. No es as�
: ??
: Yo utilizar�a tu segunda opci�n pero validando que exista la ruta con -d
: as�:
: if [ -d $dir ]; then
: rmdir $dir && ( echo vacio; mkdir $dir ) || echo no vacio
: fi
bueno, el segundo esta puesto mas como curiosidad que
otra cosa. Tambien puede fallar si no tienes permiso de
escritura...
: Tambi�n se podr�a hacer un bucle contador:
: let cont=0
: for f in `ls -a $dir/*`; do
: let cont=$cont+1
: done
: if [ $cont -eq 0]; then
: echo "vacio"
: else
: echo "Hay $cont entradas"
: fi
problemas:
* el "for f in `...`" suele ser mas eficiente como
comando | while read f
* el "ls -a $dir/*" listara tambien los contenidos de
los subdirectorios; ademas, implica una llamada a stat() por
cada una de las entradas
* "ls -a $dir/*" no lista los ficheros de la forma .*
* la expansion de "*" en directorios vacios significa un
mensaje de error por parte del shell.
Todos esos problemas se evitan con esta construccion
test `ls -1f $dir | wc -l` -ne 2 && echo no vacio || echo vacio
(que, por cierto, no es mia; la encontre hace tiempo en
un otro grupo en el que hubo un largo debate sobre la cuestion,
y la conclusion fue que esta era la mejor solucion...)
Si no quieres usar wc, siempre puedes hacer la suma desde
el shell, como en tu ejemplo; pero entonces o bien usas un
shell POSIX, o bien recurres al programa externo "expr", con
lo que no ganas nada.
--
finger spd@shiva.cps.unizar.es for PGP /
.mailcap tip of the day: / La vida es una carcel
application/ms-tnef; cat '%s' > /dev/null / con las puertas abiertas
text/x-vcard; cat '%s' > /dev/null / (A. Calamaro)
Technical Details
Message-ID:
<b6gu5q$n4i$1@localhost.escomposlinux.org>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed1.bredband.com!bredband!amsnews01.chello.com!news-hub.cableinet.net!blueyonder!marmolejo.escomposlinux.org!not-for-mailReferences:
<pan.2003.04.02.18.35.28.658710@terra.com> <b6fckc$4n5in$1@ID-184714.news.dfncis.de> <b6fdm2$ir4$3@localhost.escomposlinux.org> <b6fgdu$bl1$1@nsnmrro2-gest.nuria.telefonica-data.net>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,6351b339ff6842aa
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-04-03 01:16:44 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed1.bredband.com!bredband!amsnews01.chello.com!news-hub.cableinet.net!blueyonder!marmolejo.escomposlinux.org!not-for-mail
From: "J.A. Gutierrez" <spd@daphne.cps.unizar.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: ayuda con script...
Date: Thu, 3 Apr 2003 09:16:43 +0000 (UTC)
Organization: Rank
Lines: 69
Sender: "J.A. Gutierrez" <spd@shiva.cps.unizar.es>
Message-ID: <b6gu5q$n4i$1@localhost.escomposlinux.org>
References: <pan.2003.04.02.18.35.28.658710@terra.com> <b6fckc$4n5in$1@ID-184714.news.dfncis.de> <b6fdm2$ir4$3@localhost.escomposlinux.org> <b6fgdu$bl1$1@nsnmrro2-gest.nuria.telefonica-data.net>
NNTP-Posting-Host: shiva.cps.unizar.es
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: localhost.escomposlinux.org 1049361403 23698 155.210.152.10 (3 Apr 2003 09:16:43 GMT)
X-Complaints-To: newsmaster@marmolejo.escomposlinux.org
NNTP-Posting-Date: Thu, 3 Apr 2003 09:16:43 +0000 (UTC)
User-Agent: tin/1.4.5-20010409 ("One More Nightmare") (UNIX) (IRIX64/6.2 (IP19))