Antwort mit KI erzeugt
Shell-Skript erstellen (Verzeichnisstruktur erstellen)
Dein Ansatz ist schon ein guter Start. Es gibt jedoch einige Verbesserungen, um das Skript funktionsfähig und effizienter zu gestalten. Im Folgenden findest du einen kompletten Vorschlag für dein Skript:
bash
#!/bin/bash
# Hauptverzeichnis und Anzahl der Unterverzeichnisse als Argumente übernehmen
haupt_verzeichnis=$1
anzahl_unterverzeichnisse=$2
# Überprüfen, ob das Hauptverzeichnis bereits existiert
if [ -d "$haupt_verzeichnis" ]; then
echo "Das Verzeichnis $haupt_verzeichnis existiert bereits."
# Abfrage für einen neuen Namen
read -p "Bitte geben Sie einen neuen Namen ein: " neuer_name
haupt_verzeichnis=$neuer_name
fi
# Hauptverzeichnis erstellen
mkdir -m 777 "$haupt_verzeichnis" # Für alle Benutzer beschreibbar
echo "Hauptverzeichnis $haupt_verzeichnis wurde erstellt."
# Unterverzeichnisse erstellen
for (( i=1; i<=anzahl_unterverzeichnisse; i++ ))
do
read -p "Name für das $i. Unterverzeichnis: " unternamen
mkdir -m 555 "$haupt_verzeichnis/$unternamen" # Nur lesbar für alle Benutzer
echo "Unterverzeichnis $unternamen wurde im Verzeichnis $haupt_verzeichnis erstellt."
done
Hier die Erläuterung der Verbesserungen und der Funktionsweise des Skripts:
1.
Überprüfen des Hauptverzeichnisses: Statt
[ -e V ]
verwenden wir
[ -d "$haupt_verzeichnis" ]
um zu testen, ob ein Verzeichnis und nicht nur eine Datei existiert. Außerdem müssen Variablen in Anführungszeichen gesetzt werden, um auch Namen mit Leerzeichen korrekt zu behandeln.
2.
Variable nutzen: Dein Ansatz mit
mkdir $($V)
ist nicht korrekt. Für die Verwendung von Variablen in Kommandos, nutze direkt
$haupt_verzeichnis
ohne zusätzliche
$()
-Substitution.
3.
Verzeichnisberechtigungen: Mit
mkdir -m 777
beziehungsweise
mkdir -m 555
werden die Berechtigungen direkt beim Erstellen des Verzeichnis gesetzt.
777
erlaubt jedem Nutzer, das Verzeichnis zu lesen, zu schreiben und darin zu suchen.
555
erlaubt Lesen und Suchen für alle Nutzer, aber kein Schreiben.
4.
Schleife für Unterverzeichnisse: Die Schleife
for (( i=1; i<=anzahl_unterverzeichnisse; i++ ))
läuft so oft, wie Unterverzeichnisse erstellt werden sollen. Für jedes Unterverzeichnis wird der Benutzer um einen Namen gebeten und das Unterverzeichnis dann entsprechend erstellt.
Kopiere dieses Skript in eine Datei, z.B.
dir.sh
, und mach es mit
chmod +x dir.sh
ausführbar. Anschließend kannst du es mit
./dir.sh MeinHauptverzeichnis 3
aufrufen, wobei
MeinHauptverzeichnis
der Name des Hauptverzeichnisses ist und
3
die Anzahl der zu erstellenden Unterverzeichnisse.