🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7065

Re: ayuda con script...

#7065
From: J.A. Gutierrez
Date: Thu, 03 Apr 2003 09:16
69 lines
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-mail
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>

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))