• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Dateipfadlänge prüfen

A

Anonymous

Gast
thapate schrieb:
Code:
 find /public/xy/* | awk -F "/" '(length - length($1) - length($2) - length($3) - length($4) -4) >200' > test.txt && echo "zu lange Dateienamen"
if test -s test.txt
then
mail -s "zu lange Dateienamen" -a test.txt mail@blabla.de
fi
Wenn ich dieses Script ausführe bekomme ich kein Ergebnis..

na dann wolln mer mal nachschauen warum nicht?
extrahieren wir erstmal nur die Befehle und Verknüpfungen und lassen alles andere weg

Code:
find | awk && echo
es wird find ausgeführt per pipe an awk übergeben und wenn awk ohne Fehler ( also in dem Fall immer) wird echo ausgeführt
Das && echo "zu lange Dateinamen" ist also in dieser Konstellation hier schon mal fehlplaziert.

Code:
fi ; then mail ; fi
passt fast, allerdings
Code:
# ls -l /usr/bin/mail
lrwxrwxrwx 1 root root 5  5. Aug 2007  /usr/bin/mail -> mailx
und die Manpage sagt
Manpage mailx schrieb:
Sending mail
To send a message to one or more people, mailx can be invoked with arguments which are the names of people to whom the mail will be sent. The user is then expected to type in his message, followed by an `control-D' at the beginning of a line. The section below Replying to or originating mail, describes some features of mailx available to help when composing letters.
Also will das Kommando so wie es hier steht von der Standardeingabe lesen und von dort mindests ein EOF (End Of File) also ein Schließen des Eingabekanales sehen, um weiterzumachen. In deiner Konstellation passiert das nicht, mail wartet und wartet und wartet und ....

Also sollte hier vor das Kommando mail im aller einfachsten Befehlsaufbau mal ein echo das in Richtung mail piped, besser noch, das was oben in der Zeile vorhin zuviel war. (Oder, die Mitteilung das das eine automatische Mail ist die nicht beantwortet werden soll, oder irgend einen anderen Quatsch.)

Jetzt bauen wir das mit den so gewonnen Erfahrungen wieder zusammen

Code:
find /public/xy/* | awk -F "/" '(length - length($1) - length($2) - length($3) - length($4) -4) >200' > test.txt 
if test -s test.txt
then
echo "zu lange Dateienamen" | mail -s "zu lange Dateienamen" -a test.txt mail@blabla.de
fi
und mit ein paar Änderungen damit es auf meinem Rechner läuft, bekomme ich eine Mail ;)

robi
 
Vielen, vielen DANK robi!!!
Klappt nun alles Wunderbar! It's perfect ;-)

Noch ne kurze Frage....
Hättest du mir nen Tipp wie ich meine Kentnisse in Linux-Script vertiefen könnte (Buch/ Tutorials etc.)?

Viele Grüße
ThaPate
 
A

Anonymous

Gast
thapate schrieb:
Noch ne kurze Frage....
Hättest du mir nen Tipp wie ich meine Kentnisse in Linux-Script vertiefen könnte (Buch/ Tutorials etc.)?
Ein Buch ist hier nicht das Allheilmittel, es reicht was ganz einfaches zum Einstieg damit erst einmal ein paar Grundprinzipen klar sind. Alles andere muss man sich meiner Meinung nach anders aneignen.

Einfach damit beschäftigen, einzelnen Befehlszeilen und kleine Scripte die hier und da und irgendwo rumliegen oder im System irgendwo zu finden sind, lesen, hinterfragen, tiefer reinschauen, versuchen rauszubekommen was da wo wie warum gemacht wird, die Manpages der Befehle durchforsten nach den verwendeten Optionen. Die einzelnen Befehle spielerisch auf der Konsole ausprobieren. Einfach viel auf der Konsole arbeiten. Auf diese Art neue Befehle Tools und Methoden erforschen.

Der nachste Schritt dann damit spielen, und solche kleinen Scripte etwas ändern und testen ob die Änderungen das bringen was man damit erreichen will.

Danach dann anfangen selbst kleine Scripte zu entwickeln, ruig andere Scripte als Vorlage oder Idee als Vorlage mit einbeziehen, man muss nicht immer die Welt neu erfinden, man muss auch nicht alles wissen, man muss sich nur zu helfen wissen oder ein Gefühl haben wo man schnell Hilfe finden könnte.

Mit der Zeit bekommt man dann das richtige Gefühl für die Konsole und damit dann auch für Scripte die ja eigentlich nur eine höhere Stufe von aneinander gereihten Einzelbefehlen sind. Aus einem Lehrbuch allein kommt man sowas nicht.

Zuerst aber mal deine Hausaufgaben machen, und hier das Thema auf gelöst setzten. ;)


robi
 
Oben