Problem beim Shell-Skript

Post Reply
Message
Author
mics123
Posts: 1
Joined: 19. Jun 2004 12:47

Problem beim Shell-Skript

#1 Post by mics123 »

Aufgabe war:

In Ihrem Unterverzeichnis programme soll jetzt ein Shellskript krm (komfortables rm) angelegt werden. Dieses Skript soll folgendes leisten:

Zeige alle Dateien im aktuellen Verzeichnis, die mehr als n Tage nicht modifiziert worden sind, und lösche sie auf Anfrage. Die Anzahl der Tage soll als Parameter übergeben werden.
Falls keine Zahl als Parameter übergeben wird, soll eine Fehlermeldung erscheinen und das Skript soll abbrechen.
Wie lautet der Inhalt dieses Shellskripts?

Meine Antwort ist:

find . -mtime +${1?Kein Parameter eingegeben, Du Tröte!} -exec rm -i {} \;

Doch dann noch die Frage:
Was müssen Sie nach der Anlage dieser Datei noch tun, damit Sie das Shellskript überall mit dem Kommando krm aufrufen können?

Nach Eingabe von # pwd folgt die Ausgabe: /ramdisk/home/knoppix

In diesem Verzeichnis liegt dann doch auch die erstellte Datei krm, oder nicht?

Und ich möchte krm beispielsweise auch im Verzeichnis /ramdisk/home/knoppix/programme aufrufen können.

Also was muss ich wo eingeben?
Gruß und Danke,
Michael

User avatar
Scory
Posts: 188
Joined: 16. Apr 2004 12:36

#2 Post by Scory »

>find . -mtime +${1?Kein Parameter eingegeben, Du Tröte!} -exec rm -i {} \;

Das ist TURBOFALSCH!

1) find . -mtime ... findet Dateien die NEUER sind als Anzahl Tage.
2) ${1?Kein Parameter eingegeben, Du Tröte!} bricht keinesfalls mit dieser Meldung ab, sondern weist für -mtime den Wert der Variablen ${Kein Parameter..} zu, falls $1 leer ist, also auch einen leeren Wert. Eine Fehlermeldung erfolgt dann durch find, weil der Parameter -mtime keinen gültigen Wert hat.
3) Selbst wenn es bis dahin richtig wäre: dieses Script löscht nicht nur die Dateien im aktuellen Ordner, sondern auch alle Dateien aller Unterordner. Auch Ordner werden zu löschen versucht, was in die Hose geht.

Zur zweiten Frage:

>In diesem Verzeichnis liegt dann doch auch die erstellte Datei krm, oder nicht?

Auch total falsch; das Script krm muss lediglich ausführbar gemacht werden und dann in einen Ordner verschoben werden, der Bestandteil des Suchpfades ist (beispielsweise nach /usr/local/bin).

User avatar
traeumerle
Posts: 64
Joined: 18. Sep 2002 8:17
Location: Osnabrück
Contact:

#3 Post by traeumerle »

Um dein Shellscript ohne den vollständigen Pfad überall aufzurufen, muß es im Suchpfad deiner Shell liegen. den aktuellen Suchpfad kannst du dir mit

Code: Select all

echo $PATH
anzeigen lassen. Nun muß dein Shellscript entwede in eines der angezeigten Verzeichnisse (In solchen Fällen am besten /usr/local/bin) oder der Pfad muss um das Verzeichniss ergänzt werden, in dem dein Script liegt, das kannst du folgendemaßen erledigen:

Code: Select all

export PATH=$PATH':/dein/eigenes/scriptverzeichnis'
Wenn du dies nach einem neuen Login nicht erneut tippen möchtest, kannst du das ganze auch an das Ende der /etc/profile (Systemweit für alle enutzer) oder in die ~/.bashrc für den jew. Benutzer schreiben.

Bis denne denn

Christian
Bis denne denn

Christian Nobis

andy_lv
Posts: 6
Joined: 14. Jun 2004 7:13

#4 Post by andy_lv »

...und ausführbarmachenkannst Du dein Shellscript so
~>chmod +x krm

Post Reply