Extrahieren den Dateibasisnamen in Bash
- Verwenden der Substring-Parametererweiterung zum Extrahieren des Dateibasisnamens in Bash
-
Verwenden des Befehls
basename
zum Extrahieren des Dateibasisnamens in Bash
Dieses Tutorial zeigt verschiedene Möglichkeiten zum Extrahieren des Dateibasisnamens mithilfe der Teilstring-Parametererweiterung und des Befehls basename
.
Verwenden der Substring-Parametererweiterung zum Extrahieren des Dateibasisnamens in Bash
Parameter in Bash sind Elemente, die Werte speichern. Die Erweiterung ersetzt eine Parameterreferenz durch ihren Wert.
Um Parameter in Bash zu erweitern, stellen Sie dem Namen des Parameters ein $
-Zeichen voran. Das Einschließen des Parameternamens in geschweiften Klammern ist optional.
Die zwei Schreibweisen für die Parametererweiterung sind unten gezeigt.
$parameter
${parameter}
Innerhalb der geschweiften Klammern der Parametererweiterung können einige Operatoren zusammen mit ihren Argumenten hinzugefügt werden. Die Operatoren werden nach dem Namen des Parameters und vor der schließenden geschweiften Klammer platziert.
Wir können diese Operatoren für Bedingung, Teilzeichenfolge, Teilmenge, Präfixauflistung, Elementzählung und Fallmodifikationserweiterung verwenden. Diese Operatoren ändern nur den Parameter, ohne den Wert des Parameters zu ändern.
Das folgende Skript verwendet eine Teilstring-Parametererweiterung, um einen Teilstring durch String-Musterabgleich zu extrahieren. Die verwendete Syntax ist ${parameter##pattern}
.
Das ##
gibt an, dass das Muster von der linken Seite der Zeichenfolge übereinstimmen soll, und das */
ist in unserem Fall das Muster. Das ${path##*/}
entspricht dem letzten /
der Variable path
und gibt in diesem Fall den verbleibenden Teilstring file1.txt
zurück.
path=/home/delftstack/test/file1.txt
echo "${path##*/}"
Die Ausführung des Skripts gibt den Namen der Datei in der Standardausgabe aus.
file1.txt
Verwenden des Befehls basename
zum Extrahieren des Dateibasisnamens in Bash
Der basename
ist ein Befehl in Linux, der das letzte Element zurückgibt, wenn ein Dateipfad als Argument angegeben wird. Im folgenden Skript erhält der Befehl basename
die Variable path
, die den Dateipfad als Argument hat. Das Skript führt den Befehl basename
durch Befehlssubstitution aus.
Befehlsersetzung ist eine Bash-Funktion, die es uns ermöglicht, Linux-Befehle auszuführen und die Ausgabe des Befehls in einer Variablen zu speichern. Sobald ein Befehl mit dieser Funktion ausgeführt wird, ersetzt die Standardausgabe des Befehls den Befehl, wobei alle abschließenden Zeilenumbrüche entfernt werden.
Die Ausgabe des basename
-Befehls ersetzt den Befehl selbst und wird der fname
-Variablen zugewiesen. Mit dem Befehl printf
wird der Inhalt der Variablen fname
auf der Standardausgabe ausgegeben.
path=/home/delftstack/test/file1.txt
fname=$(basename "$path")
printf $fname
printf "\n"
Das Skript zeigt nach seiner Ausführung die folgende Ausgabe an.
file1.txt