Übung (Directory Struktur)

Schreibe ein Shell-Script das Unterverzeichnisse und Dateien anlegt, es wird ein Argument an das Script übergeben.

Aufruf: ./build_dirs.sh abcd

Dies führt zu folgender Directorystruktur:

./
└── abcd/
    ├── abcd_01/
    │   ├── abcd.01.1.txt
    │   ├── abcd.01.2.txt
    │   └── abcd.01.3.txt
    └── abcd_02/
        ├── abcd.02.1.txt
        ├── abcd.02.2.txt
        └── abcd.02.3.txt

Schreibe weiters ein Shell-Script clean_dir.sh das diese Verzeichnisstruktur wieder löscht.

Hinweis: Das Kommando tree kann verwendet werden um eine Directory Struktur in obiger Form darzustellen.


Übung (Skript Generator)

Schreibe ein Skript das

Anwendung:

$ ./makescript.sh mytest

erzeugt die Datei mytest.sh :

#!/bin/env sh

echo "mytest Skript"

# write yor script here

Das erzeugte Skript kann sofort ausgeführt werden:

$ ./mytest.sh

Übung (Headline Cat)

Verwende $@ zur Lösung dieser Aufgabenstellung.

Schreibe ein Skript das eine Art cat zur Verfügung stellt. Als Argumente werden eine beliebige Anzahl von Textdateien übergeben. Das Ergebnis (der Inhalt aller dieser Dateien) wird in die Datei result.txt (fixer Dateiname) geschrieben (ist die Datei vorhanden soll deren Inhalt überschrieben werden). Jedem Datei-Inhalt soll eine Überschrift vorangestellt werden.

Beispiel – der Aufruf

$ ./headline_cat.sh file1.txt file2.txt file3.txt

ergibt die Datei result.txt mit folgendem Inhalt:

== file1.txt ==========================================
Das ist der Inhalt
der ersten Textdatei

== file2.txt ==========================================
Das ist der Inhalt
der zweiten Textdatei

== file3.txt ==========================================
Das ist der Inhalt
der dritten Textdatei


Übung (RANDOM)

Schreibe ein shellscript das eine beliebige Menge von Dateinamen als Parameter akzeptiert. Von jeder dieser Dateien soll eine Kopie im gleichen Verzeichnis angelegt werden. Die Kopie unterscheidet sich vom Original durch eine angefügte Zufallszahl, Beispiel:

test.txt --> test.txt.38573

Aufrufbeispiele:

$ ./randcp.sh test1.txt test2.txt
$ ./randcp.sh xyz1.md test3.txt abcd.dat
$ ./randcp.sh *.md