Auf der Linux-Befehlszeile arbeiten Sie mit verschiedenen Dateitypen, beispielsweise Verzeichnissen, symbolischen Links und ähnlichen Dingen. Manchmal ist es erforderlich, mehr über einzelne Elemente in einem Pfad zu wissen – um welchen Dateityp es sich handelt, wer sein Besitzer ist und mehr. Glücklicherweise gibt es ein eingebautes Linux-Befehlszeilendienstprogramm namens namei - damit können Sie diese Informationen abrufen.
In diesem Tutorial werden wir die Grundlagen von namei anhand einiger leicht verständlicher Beispiele besprechen. Aber bevor wir damit beginnen, ist es erwähnenswert, dass alle Beispiele hier auf einem Ubuntu 18.04 LTS-Rechner getestet wurden.
Linux namei-Befehl
Der Namei-Befehl in Linux folgt einem Pfadnamen, bis ein Endpunkt gefunden wird. Es folgt die Syntax:
namei [options] pathname...
Und hier ist, was die Manpage über dieses Tool sagt:
namei interprets its arguments as pathnames to any type of Unix file
(symlinks, files, directories, and so forth). namei then follows each
pathname until an endpoint is found (a file, a directory, a device
node, etc). If it finds a symbolic link, it shows the link, and starts
following it, indenting the output to show the context.
This program is useful for finding "too many levels of symbolic links"
problems.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der Namei-Befehl funktioniert.
Q1. Wie benutzt man namei?
Die grundlegende Verwendung ist ziemlich einfach, alles, was Sie tun müssen, ist, 'namei' auszuführen, gefolgt von einem Befehlszeilenpfad.
Zum Beispiel:
namei -v /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
Und hier ist die Ausgabe dieses Befehls:
f: /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
d /
d home
d himanshu
d Downloads
d HTF-review
d Nodejs-Docker
- 1.png
Die Manpage des Tools beschreibt detailliert, wie die Ausgabe zu interpretieren ist.
For each line of output, namei uses the following characters to identify the file type found:
f: = the pathname currently being resolved
d = directory
l = symbolic link (both the link and its contents are output)
s = socket
b = block device
c = character device
p = FIFO (named pipe)
- = regular file
? = an error of some kind
Sie können also sehen, dass der namei-Befehl alle Elemente im Pfad, den wir ihm übergeben haben, aufgeschlüsselt hat und uns über ihren Typ informiert.
Q2. Wie wird die Namei-Ausgabe vertikal ausgerichtet?
Dies können Sie mit der Befehlszeilenoption -v tun. Zum Beispiel:
namei -v /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
Und hier ist die Ausgabe:
f: /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
d /
d home
d himanshu
d Downloads
d HTF-review
d Nodejs-Docker
- 1.png
Wenn Sie dies mit der im vorherigen Abschnitt gezeigten Ausgabe vergleichen, werden Sie feststellen, dass es diesmal eine vertikale Ausrichtung gibt.
Q3. Wie kann ich Namei veranlassen, Eigentümer- und Gruppeninformationen anzuzeigen?
Dies kann mit der Befehlszeilenoption -o erfolgen. Zum Beispiel:
namei -o /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
Hier ist die Ausgabe:
f: /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
d root root /
d root root home
d himanshu himanshu himanshu
d himanshu himanshu Downloads
d himanshu himanshu HTF-review
d himanshu himanshu Nodejs-Docker
- himanshu himanshu 1.png
So können Sie sehen, dass Eigentumsinformationen für jede Datei/jedes Verzeichnis in der Ausgabe angezeigt werden.
Q4. Wie bringt man namei dazu, das Ausgabeformat für lange Listen zu verwenden?
Dies kann mit der Befehlszeilenoption -l erfolgen.
namei -l /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
Hier ist die Ausgabe:
f: /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x himanshu himanshu himanshu
drwxr-xr-x himanshu himanshu Downloads
drwxr-xr-x himanshu himanshu HTF-review
drwxr-xr-x himanshu himanshu Nodejs-Docker
-rw-rw-r-- himanshu himanshu 1.png
Sie können also sehen, dass eine ls-Befehlsähnliche Ausgabe vom namei-Befehl erzeugt wird.
F5. Wie funktioniert namei mit symbolischen Links?
Wie bereits eingangs erklärt, folgt der Namei-Befehl standardmäßig einem symbolischen Link. Auf meinem System ist „link1“ beispielsweise ein symbolischer Link zu einer Datei „file1“, also habe ich den Pfad „link1“ als Eingabe an namei auf folgende Weise übergeben:
namei /home/himanshu/link1
Dann wurde die folgende Ausgabe erzeugt:
f: /home/himanshu/link1
d /
d home
d himanshu
l link1 -> file1
- file1
Sie können also sehen, dass der Namei-Befehl deutlich zeigt, um welche Art von Datei es sich bei ‚Datei1‘ handelt. Wenn Sie möchten, können Sie das Tool jedoch zwingen, symbolischen Links nicht zu folgen, was Sie mit der Befehlszeilenoption -n tun können.
namei -n /home/himanshu/link1
Hier ist die Ausgabe in diesem Fall:
f: /home/himanshu/link1
d /
d home
d himanshu
l link1 -> file1
Sie können also sehen, dass das Tool in diesem Fall dem symbolischen Link nicht gefolgt ist.
Schlussfolgerung
Der Namei-Befehl ist besonders nützlich bei verschachtelten symbolischen Link-Elementen im Pfad. Hier, in diesem Tutorial, haben wir die meisten Befehlszeilenoptionen besprochen, die dieses Tool bietet. Wenn Sie mit dem Üben fertig sind, gehen Sie zur Manpage des Tools, um mehr darüber zu erfahren.