GNU/Linux >> LINUX-Kenntnisse >  >> Linux

readlink -f und -e Optionsbeschreibung nicht klar

Die erste Komponente bedeutet hier ein Element des Pfads.Beispiel:

/home/user/.ssh => <component1>/<component2>/<component3>

1- Angenommen, wir haben eine Verzeichnisstruktur wie diese:

lols
├── lol
├── lol1 -> lol
└── lol2 -> lol1

Und auch das nicht vorhandene Verzeichnis hier wird lols/lol3 sein. So können Sie die Ausgabe jedes Befehls vergleichen:

readlink -f lols/lol1 : /lols/lol
readlink -e lols/lol1 : /lols/lol

Die Ausgabe hier ist dieselbe, da alle Komponenten des Pfads vorhanden sind.

readlink -f lols/lol8 : lols/lol8
readlink -e lols/lol8 : <empty outpyt>

Die Ausgabe hier ist anders, weil mit -f das Ergebnis wird angezeigt, weil es eine Komponente gibt das gibt es mindestens in dem Pfad, der lols ist und mit -e die Ausgabe ist leer, da alle Pfadkomponenten vorhanden sein müssen .

Und der letzte ist, mehrere nicht existierende Verzeichnisse zu haben:

readlink -f lols/lol8/lol10 : <empty output>
readlink -e lols/lol8/lol10 : <empty output>

Hier ist die Ausgabe leer, da wie auf der Kartenseite beschrieben :-f :alle Komponenten bis auf die letzte vorhanden sein müssen => nicht berücksichtigt-o :alle Komponenten vorhanden sein müssen => nicht berücksichtigt

2- Warum nicht nur ls -l :

verwenden

Angenommen, wir erstellen eine Datei namens file1 und erstellen einen asymlink zu dieser Datei namens link1 und erstellen aus link1 einen weiteren symbolischen Link link2 :

touch file1 : file1 
ln -s file1 link1 : link1 -> file1
ln -s link1 link2 : link2 -> link1

Dann mit ls -l link2 Die Ausgabe lautet:link2 -> link1Und wenn wir readlink link2 verwenden die Ausgabe wird sein:link1; dasselbe wie ls -lAber wenn wir readlink -f|-e link2 verwenden die Ausgabe wird sein:file1; es zeigt also auf die Quelle Datei.

Wann sollte man also readlink verwenden? statt ls ?Wenn es einen verschachtelten symlink gibt (Rekursives Lesen). Wenn sich die Dateien/Verzeichnisse an unterschiedlichen Orten befinden.

Verwenden Sie also besser readlink statt ls um Fehler zu vermeiden.


Dies ist sinnvoll für Links, die einer Route über mehr als einen Hop bis zu ihrem endgültigen Ziel folgen. Zum Beispiel:

touch test_file

ln -s test_file test_link
ln -s non_existing_target dead_link

ln -s test_link link1
ln -s dead_link link2

Oben link1 schließlich eine Verknüpfung zu einer Datei durch test_link , also -f und -e würde das gleiche Ergebnis liefern. link2 zeigt auf einen toten Link, und Sie sehen Folgendes:

> readlink -e link2
> readlink -f link2
/home/thanasis/temp/non_existing_target

dead_link ist die "letzte Komponente" im Ausdruck "alle außer der letzten Komponente müssen vorhanden sein". -f wird in das Ziel aufgelöst, das nicht existiert, während -e gibt keine Ausgabe.

Beachten Sie, dass man readlink empfiehlt das

realpath ist der bevorzugte Befehl für die Kanonisierungsfunktion

Für dieses Beispiel realpath -m , (--missing ) würde dieselbe Ausgabe für readlink -f liefern . Allgemein realpath -e ist die Möglichkeit zu testen, ob ein Link zu einer endgültig vorhandenen Zieldatei aufgelöst werden kann, die hier den erwarteten Fehler zurückgibt:

> realpath -e link2
realpath: link2: No such file or directory

Während ls -l gibt alle Ergebnisse zurück und hat wahrscheinlich eine rote Farbausgabe für alle toten Links. Ebenso die Option -L existiert, um die Links zu dereferenzieren und ihr Ziel anzuzeigen, dies ist für Menschen zu lesen, verwenden Sie niemals ls irgendetwas über einen Link innerhalb eines Skripts zu entscheiden.


Linux
  1. Linux – Warum verwenden wir Su – und nicht nur Su?

  2. Ausgang begrenzen und Signal 13 vermeiden?

  3. Warum fügt die Ssh -t Option Cr &Lf in der umgeleiteten Ausgabe hinzu?

  4. Linux – Kopfhörer funktioniert nicht Linux Mint 18?

  5. Warum ist es Rm -rf und nicht Rmdir -rf?

Warum „löschen“ den ganzen Bildschirm nicht löschen?

Ausgabe umleiten und leiten?

Iptables und transparente Proxys?

So löschen Sie den Bash-Verlauf in Linux und Mac

Unterschiedliche Farbe für Befehl und Ausgabe

rsync und symbolische Links