Verhindern von 'Datei oder Verzeichnis nicht gefunden' Fehlern
Nachdem Sie nun wissen, wie man diese Fehler behebt, wollen wir bewährte Verfahren erkunden, um zu verhindern, dass sie überhaupt erst auftreten.
Best Practice 1: Verwenden Sie absolute Pfade für Skripte
Beim Schreiben von Skripten oder Befehlen, die von verschiedenen Orten aus ausgeführt werden sollen, verwenden Sie absolute Pfade:
Erstellen wir ein einfaches Skript, das absolute Pfade verwendet:
cd ~/project
nano absolute_path_script.sh
Fügen Sie dem Skript den folgenden Inhalt hinzu:
#!/bin/bash
echo "Datei mit absolutem Pfad lesen:"
cat /home/labex/project/documents/reports/monthly_report.txt
Speichern Sie die Datei, indem Sie Ctrl+O
, dann Enter
drücken und mit Ctrl+X
beenden.
Machen Sie das Skript ausführbar:
chmod +x absolute_path_script.sh
Führen Sie das Skript aus:
./absolute_path_script.sh
Ausgabe:
Datei mit absolutem Pfad lesen:
This is a sample report
Das Skript funktioniert, weil es einen absoluten Pfad verwendet, unabhängig davon, wo es ausgeführt wird.
Best Practice 2: Überprüfen Sie, ob Dateien/Verzeichnisse existieren, bevor Sie sie verwenden
Erstellen Sie ein weiteres Skript, das überprüft, ob eine Datei existiert, bevor versucht wird, sie zu verwenden:
nano file_check_script.sh
Fügen Sie den folgenden Inhalt hinzu:
#!/bin/bash
FILE="/home/labex/project/documents/reports/monthly_report.txt"
NONEXISTENT_FILE="/home/labex/project/documents/reports/quarterly_report.txt"
## Überprüfen, ob die Datei existiert, bevor sie verwendet wird
if [ -f "$FILE" ]; then
echo "Datei existiert, Inhalt wird gelesen:"
cat "$FILE"
else
echo "Fehler: $FILE existiert nicht"
fi
## Auf nicht existierende Datei prüfen
if [ -f "$NONEXISTENT_FILE" ]; then
cat "$NONEXISTENT_FILE"
else
echo "Die Datei $NONEXISTENT_FILE existiert nicht"
echo "Wird jetzt erstellt..."
echo "This is a quarterly report" > "$NONEXISTENT_FILE"
echo "Datei erfolgreich erstellt"
fi
Speichern und beenden (Ctrl+O
, Enter
, Ctrl+X
).
Machen Sie das Skript ausführbar:
chmod +x file_check_script.sh
Führen Sie das Skript aus:
./file_check_script.sh
Ausgabe:
Datei existiert, Inhalt wird gelesen:
This is a sample report
Die Datei /home/labex/project/documents/reports/quarterly_report.txt existiert nicht
Wird jetzt erstellt...
Datei erfolgreich erstellt
Überprüfen Sie, ob die neue Datei erstellt wurde:
cat documents/reports/quarterly_report.txt
Ausgabe:
This is a quarterly report
Best Practice 3: Organisieren Sie Ihre Dateien logisch
Eine gut organisierte Dateistruktur hilft, Fehler zu vermeiden. Erstellen wir eine besser organisierte Struktur für ein neues Projekt:
mkdir -p ~/project/new_project/{src,docs,config,data}
Dies erstellt ein Verzeichnis mit vier Unterverzeichnissen in einem Befehl.
Überprüfen Sie die Struktur:
ls -la ~/project/new_project/
Ausgabe:
total 20
drwxr-xr-x 6 labex labex 4096 Jan 1 00:00 .
drwxr-xr-x 5 labex labex 4096 Jan 1 00:00 ..
drwxr-xr-x 2 labex labex 4096 Jan 1 00:00 config
drwxr-xr-x 2 labex labex 4096 Jan 1 00:00 data
drwxr-xr-x 2 labex labex 4096 Jan 1 00:00 docs
drwxr-xr-x 2 labex labex 4096 Jan 1 00:00 src
Erstellen Sie eine README-Datei im Projektstamm, um die Struktur zu dokumentieren:
cat > ~/project/new_project/README.txt << EOF
Project Directory Structure:
- src/: Source code files
- docs/: Documentation
- config/: Configuration files
- data/: Data files
EOF
Zeigen Sie die README an:
cat ~/project/new_project/README.txt
Ausgabe:
Project Directory Structure:
- src/: Source code files
- docs/: Documentation
- config/: Configuration files
- data/: Data files
EOF
Best Practice 4: Verwenden Sie Umgebungsvariablen für gängige Pfade
Umgebungsvariablen können helfen, Pfade konsistenter zu verwalten:
nano ~/.zshrc
Fügen Sie diese Zeilen am Ende der Datei hinzu:
## Projektverzeichnisse
export PROJECT_ROOT=~/project
export DOCS_DIR=$PROJECT_ROOT/documents
export REPORTS_DIR=$DOCS_DIR/reports
Speichern und beenden (Ctrl+O
, Enter
, Ctrl+X
).
Übernehmen Sie die Änderungen:
source ~/.zshrc
Jetzt können Sie diese Variablen in Befehlen verwenden:
echo "Zugriff auf Bericht mit Umgebungsvariable:"
cat $REPORTS_DIR/monthly_report.txt
Ausgabe:
Zugriff auf Bericht mit Umgebungsvariable:
This is a sample report
Erstellen Sie ein Skript, das diese Umgebungsvariablen verwendet:
nano env_var_script.sh
Fügen Sie den folgenden Inhalt hinzu:
#!/bin/bash
echo "Berichtsverzeichnis ist: $REPORTS_DIR"
echo "Dateien im Berichtsverzeichnis:"
ls -la $REPORTS_DIR
Speichern, beenden und ausführbar machen:
chmod +x env_var_script.sh
Führen Sie das Skript aus:
./env_var_script.sh
Ausgabe:
Berichtsverzeichnis ist: /home/labex/project/documents/reports
Dateien im Berichtsverzeichnis:
total 8
drwxr-xr-x 2 labex labex 4096 Jan 1 00:00 .
drwxr-xr-x 5 labex labex 4096 Jan 1 00:00 ..
-rw-r--r-- 1 labex labex 22 Jan 1 00:00 monthly_report.txt
-rw-r--r-- 1 labex labex 25 Jan 1 00:00 quarterly_report.txt