Linux dirname-Befehl
Was ist der Befehl dirname?
dirnameEr ist ein einfaches, aber praktisches Kommandozeilenwerkzeug in Linux/Unix-Systemen, mit dem der Verzeichnisanteil aus einem Dateipfad extrahiert werden kann. Es hilft Ihnen, schnell das übergeordnete Verzeichnis eines Pfads zu erhalten, ohne Zeichenketten manuell zu parsen.
Grundlegende Funktionalität
- Eingabe: eine Dateipfad-Zeichenkette
- Ausgabe: der Verzeichnisteil des Pfads (d. h. was übrig bleibt, nachdem der letzte Schrägstrich und alles danach entfernt wurde)
Befehlssyntax
dirname [选项] 文件名...
Parameterbeschreibung
- filename: kann ein oder mehrere Dateipfade sein (unterstützt absolute und relative Pfade)
- **...** : gibt an, dass mehrere Dateipfade gleichzeitig verarbeitet werden können
Optionen
Obwohl in den meisten Fällendirnamekeine Optionen benötigt werden, unterstützt die GNU-Version die folgenden Standardoptionen:
| Option | Beschreibung |
|---|---|
-z |
NUL-Zeichen (\0) verwenden, um die Ausgabe anstelle von Zeilenumbrüchen zu trennen |
--help |
Hilfeinformationen anzeigen |
--version |
Versionsinformationen anzeigen |
Funktionsweise
dirnameDer Befehl verarbeitet Pfade in den folgenden Schritten:
- Alle abschließenden Schrägstriche (/) aus dem Pfad entfernen
- Den letzten Schrägstrich und alle Zeichen danach entfernen
- Wenn das Ergebnis leer ist, "." (aktuelles Verzeichnis) ausgeben
Verarbeitungsflussdiagramm

Anwendungsbeispiele
Grundlegende Verwendung
Beispiel
/home/user/docs
$ dirname relative/path/to/file
relative/path/to
Verarbeitung mehrerer Dateien
Beispiel
/a/b
/x/y
Spezielle Pfadbehandlung
Beispiel
/usr
$ dirname file.txt # Nur Dateiname
.
$ dirname / # Wurzelverzeichnis
/
Verwendung in Skripten
Beispiel
# Skriptverzeichnis abrufen
SCRIPT_DIR=$(dirname "$0")
echo "Skriptverzeichnis:$SCRIPT_DIR"
# Verzeichnis des Konfigurationsdateipfads abrufen
CONFIG_PATH="/etc/app/config.cfg"
CONFIG_DIR=$(dirname "$CONFIG_PATH")
echo "Konfigurationsverzeichnis:$CONFIG_DIR"
Häufige Anwendungsfälle
1. Skriptverzeichnis abrufen
Beispiel
# Absoluten Pfad des Skriptverzeichnisses abrufen
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
echo "Skriptverzeichnis:$SCRIPT_DIR"
2. Relative Pfade konstruieren
Beispiel
BASE_DIR="/var/log"
FULL_PATH="$BASE_DIR/app/error.log"
# Log-Verzeichnis ermitteln
LOG_DIR=$(dirname "$FULL_PATH")
3. Verwendung mit basename
Beispiel
FULL_PATH="/home/user/docs/report.pdf"
DIR=$(dirname "$FULL_PATH")
FILE=$(basename "$FULL_PATH")
echo "Verzeichnis:$DIR"
echo "Dateiname:$FILE"
Hinweise
Symbolische Links:dirnameEs löst keine symbolischen Links auf; wenn du sie auflösen musst, kannst du es kombinieren mitreadlinkVerwenden Sie
Beispiel
Umgang mit Leerzeichen: Wenn der Pfad Leerzeichen enthält, stelle sicher, dass du Anführungszeichen verwendest
Beispiel
Relative Pfade: Die Ausgabe bleibt in relativer Pfadform
Beispiel
../parent
Leere Eingabe: Wenn keine Argumente angegeben werden, gibt die GNU-Version "." aus, aber das ist kein POSIX-Standardverhalten
Vergleich mit ähnlichen Befehlen
| Befehl | Funktion | Beispieleingabe | Beispielausgabe |
|---|---|---|---|
dirname |
Verzeichnisteil extrahieren | /a/b/c.txt | /a/b |
basename |
Dateinamen-Teil extrahieren | /a/b/c.txt | c.txt |
realpath |
Absoluten Pfad abrufen (symbolische Links auflösen) | ../file | /full/path/to/file |
Praktische Übungen
Erstellen Sie eine Testdatei und ermitteln Sie ihren Verzeichnispfad
Beispiel
dirname /tmp/testfile
Schreiben Sie ein Skript, das sein eigenes Verzeichnis anzeigt
Beispiel
echo "Dieses Skript befindet sich in:$(dirname "$0")"
Versuchen Sie, Pfade mit Leerzeichen und Sonderzeichen zu verarbeiten
Beispiel
touch "/tmp/my dir/special file.txt"
dirname "/tmp/my dir/special file.txt"
Andere Erweiterungen
Linux-Befehlsreferenz