Extrahieren den Dateibasisnamen in Bash

Fumbani Banda 22 März 2022
  1. Verwenden der Substring-Parametererweiterung zum Extrahieren des Dateibasisnamens in Bash
  2. Verwenden des Befehls basename zum Extrahieren des Dateibasisnamens in Bash
Extrahieren den Dateibasisnamen 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
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub