Shell Programmierung

Hallo,

ich stehe im Momemt total auf dem Schlauch… ich versuche unter der „bash“ folgende zwei Shell Scripte zu erstellen.

  1. Alle -pdf Dateien im aktuellen Verzeichnis soll in eine bestimmte .tar Datei gepackt werden. Der Name der Tar Datei soll interaktiv sein.

(ich schätze mit dem find kommando im aktuellen Verzeichnis whoami nach *.pdf suchen lassen, und falls vorhanden, dann per tar Befehl packen). Sehe ich das richtig, oder fehlt mir noch der richtige Ansatz?

  1. Erstellen Sie ein Shell Skript, das Ihnen eine bestimmte Datei ihres Arbeitsverezichnisses auf der Konsole ausgibt. Das Skript soll zu Beginn prüfen, ob ein Dateiname als Parameter beim AUfruf (als Kommandozeilenarugument) angegeben wurde.
  • falls kein Dateiname angegeben wurde oder der übergegebene Parameter im aktuellen Verzeichnis nicht existiert, soll nach einer entsprechenden Meldung an den Benutzer ihr Shell Skript den Dateinamen interaktiv vom Benutzer einlesen.

bei 2) habe ich absolut keinen Plan, wäre für jede kleine Hilfe Dankbar.

Gruß

Punkt 1 hat sich erledigt, ging einfacher als gedacht…

#!bin/bash
echo „Geben Sie jetzt einen Dateinamen an.“
read TASTE
tar cvvf $TASTE.tar *.pdf

Diese Teilaufgabe habe ich so gelöst, nun - soll ich wie in 1), allerdings nur 3 aller meiner PDF`s und nur die drei ersten im ABC als *.pdf packen. Nun bin ich wirklich überfragt!

Erste Variante wäre
tar cvvf $TASTE.tar ls *.pdf | sort | head -n 3
aber das gibt Probleme mit Dateinamen mit Leerzeichen drin.

Das sollte besser sein:
ls *.pdf | sort | head -n 3 | tar -T - -cvvf $TASTE.tar

vielen Dank, funktioniert einwandfrei - hast mir sehr geholfen.

  1. Erstellen Sie ein Shell Skript, das Ihnen eine bestimmte
    Datei ihres Arbeitsverezichnisses auf der Konsole ausgibt. Das

Ausgeben: cat Dateiname

Skript soll zu Beginn prüfen, ob ein Dateiname als Parameter
beim AUfruf (als Kommandozeilenarugument) angegeben wurde.

  • falls kein Dateiname angegeben wurde oder der übergegebene
    Parameter im aktuellen Verzeichnis nicht existiert, soll nach
    einer entsprechenden Meldung an den Benutzer ihr Shell Skript
    den Dateinamen interaktiv vom Benutzer einlesen.

if [-z „$1“ -o ! -f „$1“]; then

fi

Die Testbedingungen aus der [] gibts mit „man test“, -z ist „Länge 0“, -o Oder, ! nicht, -f ist eine Datei

Alexander