Linux dirname-Befehl

Linux 命令大全Linux-Befehlsreferenz


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:

  1. Alle abschließenden Schrägstriche (/) aus dem Pfad entfernen
  2. Den letzten Schrägstrich und alle Zeichen danach entfernen
  3. Wenn das Ergebnis leer ist, "." (aktuelles Verzeichnis) ausgeben

Verarbeitungsflussdiagramm


Anwendungsbeispiele

Grundlegende Verwendung

Beispiel

$ dirname /home/user/docs/file.txt
/home/user/docs

$ dirname relative/path/to/file
relative/path/to

Verarbeitung mehrerer Dateien

Beispiel

$ dirname /a/b/c.txt /x/y/z.txt
/a/b
/x/y

Spezielle Pfadbehandlung

Beispiel

$ dirname /usr/bin/      # Beachten Sie den abschließenden Schrägstrich
/usr

$ dirname file.txt       # Nur Dateiname
.

$ dirname /              # Wurzelverzeichnis
/

Verwendung in Skripten

Beispiel

#!/bin/bash

# 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

#!/bin/bash
# Absoluten Pfad des Skriptverzeichnisses abrufen
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
echo "Skriptverzeichnis:$SCRIPT_DIR"

2. Relative Pfade konstruieren

Beispiel

# Angenommen, wir wissen, dass sich die Datei in einem Unterverzeichnis eines bestimmten Verzeichnisses befindet
BASE_DIR="/var/log"
FULL_PATH="$BASE_DIR/app/error.log"

# Log-Verzeichnis ermitteln
LOG_DIR=$(dirname "$FULL_PATH")

3. Verwendung mit basename

Beispiel

# Vollständigen Pfad zerlegen
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

dirname "$(readlink -f "/path/with/symlink")"

Umgang mit Leerzeichen: Wenn der Pfad Leerzeichen enthält, stelle sicher, dass du Anführungszeichen verwendest

Beispiel

dirname "/path/with spaces/file.txt"

Relative Pfade: Die Ausgabe bleibt in relativer Pfadform

Beispiel

$ dirname ../parent/file.txt
../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

touch /tmp/testfile
dirname /tmp/testfile

Schreiben Sie ein Skript, das sein eigenes Verzeichnis anzeigt

Beispiel

#!/bin/bash
echo "Dieses Skript befindet sich in:$(dirname "$0")"

Versuchen Sie, Pfade mit Leerzeichen und Sonderzeichen zu verarbeiten

Beispiel

mkdir -p "/tmp/my dir"
touch "/tmp/my dir/special file.txt"
dirname "/tmp/my dir/special file.txt"

Linux 命令大全Linux-Befehlsreferenz

Andere Erweiterungen