ich möchte ein shell script schreiben und habe davon keine
Ahnung.
Die einfachste Art, ein Shellscript zu schreiben, ist, eine Textdatei anzulegen und dort genau die gleichen Befehle einzutippen, mit der du die Aufgabe auch manuell in der Shell lösen würdest.
1.) Es soll in meinem Homedirectory
cd /home/dein_directory
einen Ordner erstellen,
mkdir date '+%Y-%m-%d'
2.) Es soll alle .F-Dateien mit dem Schriftzug „PBE“ irgendwo
im Namen in einem anderen Ordner als dem Homedirectory suchen
find / -name *PBE*.F ! -regex /home/* -exec cp {} date '+%Y-%m-%d'
;
Der find-Befehl ist von einem bekloppten Autisten erfunden worden, da musst du mit der Syntax höllisch aufpassen. Am besten nicht abtippen, sondern per copy&paste kopieren. Und er funktioniert nicht auf jedem System identisch, es kann daher sein, dass dein System obigen Befehl anmeckert. Dann müssen wir ans Eingemachte…
Der find-Befehl, genauer sein Parameter -name, ist case sensitive. Wenn einer der Buchstaben aus *PBE*.F auch kleingeschrieben sein darf muss der Parameter -iname lauten.
Es ist sinnvoll, der Shell mitzuteilen, welche Shell für die Ausführung des Scripts zuständig ist. Dafür trägst du deren Pfad als erste (Shebang-) Zeile ins Script ein:
#! /bin/sh
Die Umgebung, in der das Script abläuft, kann sich substantiell von der Kommandozeile unterscheiden, in der du die Befehle testest. Daher sind alle Befehlsverweise vollqualifiziert anzugeben. Die qualifizierten Pfade können wiederum je System verschieden sein, möglicherweise musst du das folgende fertige Script (die Vorkommen von /bin/ bzw. /usr/bin/) also dahingehend anpassen:
#! /bin/sh
cd /home/dein\_directory
/bin/mkdir `/bin/date '+%Y-%m-%d'`
/usr/bin/find / -name \*PBE\*.F ! -regex /home/\* -exec cp {} `/bin/date '+%Y-%m-%d'` \;
Die Textdatei speichern, mit chmod +x ausführbar machen, mit Pfadangabe aufrufen (also ./dein_script.sh oder /ordner/dein_script.sh, nicht einfach nur dein_script.sh).
HTH