Hallo Liste, ich möchte ein Shell-Script schreiben, das feststellt, ob ein Verzeichnis leer ist und wenn es nicht leer ist, wieviel Platz die Dateien benötigen. Kann mir jemand helfen? Danke im voraus Henning
* On Thu, 03 Jul 2003 at 13:04 +0200, Henning Kulinna wrote:
ich möchte ein Shell-Script schreiben, das feststellt, ob ein Verzeichnis leer ist und wenn es nicht leer ist, wieviel Platz die Dateien benötigen. Kann mir jemand helfen?
if test `ls -A $1|wc -l ` -gt 0 ; then echo Das Verzeichnis $1 benötigt `du -s $1|cut -f1` kiB. else echo Das Verzeichnis $1 ist leer. fi /apm, boah - das ist ja einfach. -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hallo, On Thu, 03 Jul 2003, Adalbert Michelic schrieb:
if test `ls -A $1|wc -l ` -gt 0 ; then echo Das Verzeichnis $1 benötigt `du -s $1|cut -f1` kiB. else echo Das Verzeichnis $1 ist leer. fi
ObPeeve: Quoten, lieber Adalbert, quoten! dh@slarty[3]: /tmp/test4 (0)$ mkdir A dh@slarty[3]: /tmp/test4 (0)$ mkdir 'A B' dh@slarty[3]: /tmp/test4 (0)$ touch A/a dh@slarty[3]: /tmp/test4 (0)$ touch 'A B/a b' dh@slarty[3]: /tmp/test4 (0)$ function foo() { if test ...fi; } dh@slarty[3]: /tmp/test4 (0)$ foo A\ B/ ls: B/: No such file or directory du: B: No such file or directory Das Verzeichnis A B/ benoetigt 4 kiB. if test `ls -A "$1" | wc -l ` -gt 0 ; then echo "Das Verzeichnis '$1' benötigt `du -s \"$1\" | cut -f1` kiB." else echo "Das Verzeichnis '$1' ist leer." fi dh@slarty[3]: /tmp/test4 (0)$ foo A\ B/ Das Verzeichnis 'A B/' benoetigt 4 kiB. -dnh -- 58: Shareware installieren Die System Clock um drei Monate zurückstellen (Peter Berlich)
* On Thu, 03 Jul 2003 at 18:04 +0200, David Haller wrote:
On Thu, 03 Jul 2003, Adalbert Michelic schrieb:
if test `ls -A $1|wc -l ` -gt 0 ; then echo Das Verzeichnis $1 benötigt `du -s $1|cut -f1` kiB. else echo Das Verzeichnis $1 ist leer. fi
ObPeeve: Quoten, lieber Adalbert, quoten!
Jawoll, Herr Lehrer :-) Eigentlich hätte das ja eine "Technologiedemonstration" (ich mag auch mal solche schönen Buzzwords verwenden) bleiben sollen, und da überlasse ich es normal dem Fragesteller, das korrekt umzubauen. Daß das so lange und asführlich wurde, liegt nur an dem Umstand, daß der Kollege, der 'gleich' bei mir vorbeikommen wollte, 'gleich' etwas ausgedehnt hat (und ich hab einfach solange gebastelt, bis er da war) :-) /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hallo, On Fri, 04 Jul 2003, Adalbert Michelic schrieb:
* On Thu, 03 Jul 2003 at 18:04 +0200, David Haller wrote:
On Thu, 03 Jul 2003, Adalbert Michelic schrieb:
if test `ls -A $1|wc -l ` -gt 0 ; then echo Das Verzeichnis $1 benötigt `du -s $1|cut -f1` kiB. else echo Das Verzeichnis $1 ist leer. fi
ObPeeve: Quoten, lieber Adalbert, quoten!
Jawoll, Herr Lehrer :-)
Recht so. [snip Rechtfertigung, die mich wenig beeindruckt *eg*] Man sollte _IMMER_ _ALLE_ Variablen quoten! Auch z.B. bei einem echo "${0}" selbst wenn das nicht noetig waere. Der Automatismus muss sein, dass gequoted wird, sonst beisst dich das eher frueher als spaeter... Apropos: Jan und ich haben das hier mal durchgenommen, warum z.B. foo="`echo \"${1}\" | sed 's/u/x/'`" die einzig richtig gequotete Variante ist (wie gesagt, $1 statt ${1} ist hier, als einzelne Variable, ok)... Und ja, sowohl foo="`echo $1 | ...`" als auch foo=`echo "$1" | ...` erwischen dich in der ein oder anderen Variante. Und dann wills wieder keiner gewesen sein... Also lieber von vorherein immer schoen sauber quoten usw... Da gibt's dann immer noch genug "interessante" Faelle, die man umgehen muss. -dnh, ok die {} lass ich bei einzelnstehenden Variablennamen auch mal weg... Die "" aber bitte nie! PS: Ja, es _gibt_ Ausnahmen, wo man eine Variable nicht quoten darf. Diese Faelle sind aber vergleichsweise selten und man muss in diesen fuer einen korrekten Inhalt der Variablen gesorgt haben. -- Es kann dadurch , daß der Rechner ( wenn er an Trenn - zeichen umbricht [Ratti erklärt ) die falschen Stellen den Begriff erwischt , zu ganz gräß "Plenken" - lichen Effekten kommen in suse-linux] !
participants (3)
-
Adalbert Michelic
-
David Haller
-
Henning Kulinna