Linux basename Befehl für Anfänger (mit Beispielen)

Manchmal, während Sie auf der Kommandozeile arbeiten (besonders beim Umgang mit Shell-Skripten), sind Sie vielleicht nur an dem Dateinamen interessiert, aber was Ihnen zur Verfügung steht, ist der vollständige Pfad der Datei. Die Anforderung ist also, die Verzeichniskomponente des Pfades zu entfernen. Du wirst froh sein zu wissen, dass es einen Befehl – basename – gibt, der diese Aufgabe erfüllt.

In diesem Tutorial werden wir die Grundlagen von „basename“ anhand einiger leicht verständlicher Beispiele diskutieren. Aber bevor wir darauf zurückkommen, ist es erwähnenswert, dass alle Beispiele hier auf einem Ubuntu 16.04 LTS-Rechner getestet wurden.

Linux basename Befehl

Der Befehl basename ermöglicht es Ihnen, Komponenten aus nicht benötigten Dateinamen zu entfernen. Es folgt die Syntax des Tools:

basename NAME [SUFFIX]
basename OPTION... NAME...

Und hier ist, was die Manualseite darüber sagt:

basename - strip directory and suffix from filenames

Print NAME with any leading directory components removed. If specified, also remove a trailing
SUFFIX.

Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der Befehl basename funktioniert.

Q1. Wie funktioniert der Befehl basename?

Wenn Sie den Befehl „basename“ standardmäßig mit einem vollständigen Pfad zu einer Datei als Eingabe ausführen, gibt der Befehl den Dateinamen in der Ausgabe zurück. Zum Beispiel, wenn ich den folgenden Befehl ausgeführt habe:

basename /home/himanshu/Downloads/analytics.pdf

Ich habe die folgende Ausgabe erhalten:

analytics.pdf

Q2. Kann basename mehrere Eingaben verarbeiten?

Ja, das kann es. Aber damit dies geschehen kann, müssen Sie die Kommandozeilenoption -a verwenden. Zum Beispiel, wenn ich den folgenden Befehl ausgeführt habe:

basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

Und hier ist die Ausgabe, die ich habe:

analytics.pdf
test.png

Q3. Wie kann man die Dateiendung entfernen?

Manchmal möchtest du vielleicht nur den Dateinamen holen, aber nicht seine Erweiterung. Nun, dies kann mit der Kommandozeilenoption -s geschehen (die verlangt, dass Sie das Suffix als Eingabe übergeben).

Zum Beispiel der folgende Befehl:

basename -s .pdf /home/himanshu/Downloads/analytics.pdf

hat diese Ausgabe erzeugt:

analytics

Q4. Wie kann man erreichen, dass jedes Zeilenende mit NUL endet?

Standardmäßig wird das Newline-Zeichen als Trennzeichen in der Ausgabe verwendet. Wenn Sie möchten, können Sie jedoch erzwingen, dass der Basisname NUL als Trennzeichen verwendet. Dies kann mit der Kommandozeilenoption -z erfolgen.

Zum Beispiel:

basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

Und hier ist die Ausgabe:

analytics.pdftest.png

Also siehst du hier den NUL-Charakter nicht. Dazu müssen Sie die Ausgabe in eine Datei umleiten und die Datei dann in einem Editor wie vim öffnen. Hier ist, was vim gezeigt hat:

Fazit

Wie Sie sehen können, ist basename kein sehr funktionsreicher Befehl – die Optionen, die er bietet, sind begrenzt, und die meisten davon wurden hier in diesem Tutorial behandelt. Sobald Sie damit fertig sind, diese zu üben, gehen Sie zur Man Page des Tools, um mehr darüber zu erfahren.

Das könnte Dich auch interessieren …