Suchen Sie den aktuellen Ordnernamen in Bash
Das Auffinden eines Verzeichnisses ist über das Bash-Skript sehr einfach. Es ist jedoch etwas komplex, den genauen Ordnernamen des Verzeichnisses zu finden, in dem Sie sich gerade befinden.
In diesem Artikel werden drei Möglichkeiten vorgestellt, um den Ordnernamen aus dem Verzeichnis in diesem Artikel zu finden. Außerdem werden wir notwendige Beispiele und Erklärungen sehen, um das Thema einfacher zu machen.
Suchen Sie den aktuellen Ordnernamen in Bash
Dazu verwenden wir ein spezielles Schlüsselwort: PWD
. Dieses eingebaute Schlüsselwort in Bash wird verwendet, um das aktuelle Arbeitsverzeichnis zu finden.
In unserem Beispiel unten finden wir den Ordnernamen, in dem wir uns gerade befinden. Der Code für unser Beispiel sieht wie folgt aus.
current_dir=${PWD##*/}
echo "$current_dir"
Oben ist der einfachste Weg, um die Aufgabe zu erledigen. Aber unser nächstes Beispiel ist etwas komplex.
Wir finden den Ordnernamen anhand des folgenden Beispiels.
Current_Dir=${PWD##*/}
Current_Dir=${Current_Dir:-/}
printf '%s\n' "${PWD##*/}"
printf '%q\n' "${PWD##*/}"
Im obigen Beispiel weisen wir eine Variable mit der Zeile Current_Dir=${PWD##*/}
zu und durch die Zeile Current_Dir=${Current_Dir:-/}
haben wir den Fall korrigiert, wo das PWD=/
.
Danach können Sie eine der Zeilen aus den nächsten beiden Zeilen verwenden. Beide Zeilen werden auf stdout
gedruckt.
Aber die erste Zeile ist robuster als das echo
für einen ungewöhnlichen Namen, bei dem die zweite Zeile für die Verwendung als Shell-Eingabe in Anführungszeichen gesetzt wird, und sie ist auch nützlich, um versteckte Zeichen lesbar zu machen. Nachdem Sie das obige Skript ausgeführt haben, erhalten Sie nur den Namen des aktuellen Verzeichnisordners.
Wir können auch eine ähnliche Aufgabe durch unser folgendes Beispiel ausführen. Hier haben wir das ganze Verzeichnis in eine Variable genommen.
Der Code für unser nächstes Beispiel sieht etwa wie folgt aus.
DirectoryStr=/path/to/somewhere//
shopt -s extglob
CurrentDir=${DirectoryStr%%+(/)}
CurrentDir=${CurrentDir##*/}
CurrentDir=${CurrentDir:-/}
printf '%s\n' "$CurrentDir"
Lassen Sie uns dieses Beispiel Stück für Stück erklären.
- In der ersten Zeile erstellen wir eine Variable und weisen ihr den Pfad zum Verzeichnis als String zu.
- Dann haben wir durch die Zeile
shopt -s extglob
die Glob-Syntax+(...)
aktiviert. - Durch die Zeile
CurrentDir=${DirectoryStr%%+(/)}
haben wir den String getrimmt, egal wie viele abschließende Schrägstriche im String vorhanden sind. - Durch die Zeile
CurrentDir=${CurrentDir##*/}
haben wir alles vor dem letzten/
entfernt. - Wir haben gerade die Verzeichnis-Groß-/Kleinschreibung durch die Zeile
CurrentDir=${CurrentDir:-/}
korrigiert. - Zuletzt haben wir gerade den Verzeichnisordner gedruckt.
Alle in diesem Artikel verwendeten Codes sind in Bash geschrieben. Es funktioniert nur in der Linux Shell-Umgebung.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn