Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
16.04.2021, 17:20:27

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25501
  • Letzte: Andy49
Statistiken
  • Beiträge insgesamt: 729141
  • Themen insgesamt: 58832
  • Heute online: 600
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Verzeichnis erstellen, wenn nicht(s) vorhanden (was Probleme erzeugen könnte :)  (Gelesen 276 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Hallo, ich möchte mit Bash ein ISO-Image mounten und dazu vorher abfragen, ob das geplante Zielverzeichnis (Einhängepunkt?) existiert, bzw. ob irgendwas mit dem Namen existiert.

Googletreffer haben mir mehrfach diese Lösung angeboten:

Verzeichnis=/home/test
if [[ ! -d $Verzecihnis ]; then
   mkdir $Verzeichnis
fi

Wenn bei obiger Lösung aber z.B. eine Datei /home/test besteht, dann würde mkdir trotzdem ausgeführt werden, wahrscheinlich erfolglos.
Ich habe mich nicht getraut, danach den mount-Befehl auf /home/test auszuführen, denn ich gehe davon aus, dass es mehr oder weniger stark daneben gehen würde.

Ich habe daher auch mit "-e" abgefragt und eine eine merkwürdige Wahrheitstabelle für Datei, Ordner und "weder noch" vorhanden erhalten.
Verzeichnis=/home/test
if [[ -d $Verzeichnis ]; then
  echo "-d"
fi
if [[ -e $Verzeichnis ]; then
  echo "-e"
fi
if [[ ! -e $Verzeichnis ]; then
  echo "nicht -e"
fi
if [[ ! -d $Verzeichnis ]; then
  echo "nicht  -d"
fi


vorhanden     -e      -d    !-e    !-d
_____________________________________________
Datei           +        -       -       +

Ordner          +       +       -       -

nichts          -        -        +      +

Nach obiger Tabelle dürfte man mkdir nur dann ausführen, wenn man mit "! -e" geprüft hat, denn nur das liefert nur dann WAHR, wenn weder eine Datei, noch ein Verzeichnis mit dem Namen vorhanden ist. Sehe ich das richtig?

Wie auch immer, wie macht man es grundsätzlich richtig? Nicht, dass es noch weitere mögliche Objekte (z.B. versteckte, Systemkomponenten, ...) gibt, die zu Fehlern oder sogar Datenverlust führen könnten.


Falls das für die Sache entscheidend ist:
Ich nutze Mint XFCE,Cinnamon 18.3/20 64bit

Danke für den Link, Imumischabln, aber dort war ich schon.
Die Seite klärt es für mich nicht eindeutig, denn in Tabelle 4.7 steht, dass man mit "-e DATEI" abfragt, ob eine Datei existiert, während im Skript darunter im Kommentar steht: "existiert etwas mit dem Namen?".
Ich kenne aus den 90ern den Spruch: "Unter Linux ist alles eine Datei", sodass ich es für möglich halte, dass mit "DATEI" tatsächlich ein Objekt mit nahezu beliebigen Eigenschaften gemeint sein könnte.
Die bereits erwähnten Rechercheergebnisse machen es zusätzlich unklar.

Deshalb: Wie macht man es richtig, sodass nichts daneben gehen kann?

-e file True if file exists regardless of type.

#!/bin/sh
verzeichnis="/home/pinky/test_folder"
if [ ! -e "$verzeichnis" ] ; then
   echo "$verzeichnis" "does not exist"
fi