Wir haben bereits den Befehl ln besprochen, mit dem Sie Verknüpfungen zwischen Dateien erstellen können. Aber es gibt auch Tools, mit denen Sie diese Links auflösen können.
In diesem Tutorial werden wir die Grundlagen von realpath besprechen und Leselink Befehle, die ähnlich (wenn nicht gleich) in dem Sinne sind, dass sie aufgelöste symbolische Links in der Ausgabe anzeigen. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele hier auf Ubuntu 18.04 LTS und auf Debian 10 getestet wurden.
Linux-realpath- und readlink-Befehle
Wie bereits eingangs erwähnt, zeigen sowohl realpath- als auch readlink-Befehle den aufgelösten Pfad für Symlinks in der Ausgabe an.
Es folgt ihre Syntax:
realpath [OPTION]... FILE...
readlink [OPTION]... FILE...
Und hier ist, was ihre jeweiligen Manpages sagen:
Print the resolved absolute file name
print resolved symbolic links or canonical file names
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine bessere Vorstellung davon vermitteln sollen, wie diese Tools funktionieren.
Q1. Wie löst man den Pfad mit Realpath und Readlink auf?
Einfach, geben Sie einfach die Datei oder den Pfad als Eingabe an. Das folgende Beispiel zeigt, wie diese beiden Befehle einen symbolischen Link auflösen.
Und so arbeiten sie mit Pfaden:
Sie können also sehen, dass beide Befehle Symlinks in den beiden Fällen erfolgreich aufgelöst haben.
Q2. Wie drucke ich den aufgelösten Pfad relativ zu einem Verzeichnis?
Mit dem realpath-Befehl können Sie dies ganz einfach tun. Angenommen, Sie versuchen beispielsweise Folgendes:
realpath /var/local/Downloadslink
Eine zusätzliche Anforderung ist jedoch, dass die Ausgabe dieses Befehls relativ zum Verzeichnis /home/himanshu ist. Dann folgt der Befehl, den Sie ausführen müssen:
realpath /var/local/Downloadslink --relative-to=/home/himanshu
Hier ist die Ausgabe:
Downloads
Sie können also sehen, dass die Option '--relative-to' Ihnen erlaubte, eine Ausgabe relativ zum /home/himanshu-Verzeichnis zu haben.
Q3. Wie kann man .. in Pfaden einfach loswerden?
Es kann Zeiten geben, in denen das Erweitern/Auflösen von Symlinks nicht das Ziel ist, sondern das Entfernen von .. im Pfad. Mit dem realpath-Befehl können Sie dies tun.
Alles, was Sie tun müssen, ist die Befehlszeilenoption -s zu verwenden. Hier ist ein Beispiel:
realpath -s ../../var/local/Downloadslink
Und das Folgende ist die Ausgabe dieses Befehls:
/var/local/Downloadslink
Q4. Wie ändere ich das Trennzeichen?
Standardmäßig wird der Zeilenumbruch als Trennzeichen verwendet. Beide Befehle bieten jedoch eine Möglichkeit, stattdessen NUL als Trennzeichen zu verwenden.
Die Option, die Sie in beiden Fällen verwenden müssen, ist -z.
realpath -z [FILE/PATH]
readlink -z [FILE/PATH]
Schlussfolgerung
Was wir hier besprochen haben, sind nur eine Handvoll Optionen/Features, die diese Befehle bieten. Wenn Sie mit dem Üben fertig sind, gehen Sie zu den man-Seiten von readlink und realpath (hier und hier), um mehr über diese Tools zu erfahren.