2011-01-01 19 views
25

Wenn SieGibt es eine Möglichkeit, den Inhalt eines Symlinks zu sehen?

cat some-symlink-to-some-real-file 

tun zeigt es den Inhalt der realen Datei, nicht das, was innerhalb der Symlink selbst ist. Gibt es eine Möglichkeit zu sehen, was tatsächlich drin ist?

+1

Aus welcher Programmiersprache wollten Sie das machen? –

+4

Der zugrunde liegende Systemaufruf ist 'readlink (2)'. Wie in einer der Antworten erwähnt, ist der direkte Befehl zu verwenden "readlink (1)" auf einigen Systemen (GNU und Verwandten). Auf anderen Systemen - HP-UX, Solaris, AIX - ist der nächstgelegene Ansatz wahrscheinlich "ls -l", aber seien Sie sich der Probleme bewusst, wenn der Pfadname in der Verknüpfung Zeilenumbrüche oder andere seltsame Zeichen enthält. –

Antwort

31

Der ls -l Befehl Sie, dass zeigen:

$ ls -l foo 
lrwxrwxrwx 1 user group 11 2010-12-31 19:49 foo -> /etc/passwd 

Oder die readlink command:

$ readlink foo 
/etc/passwd 

also die symbolische Verbindung foo Punkte auf dem Weg /etc/passwd.

+15

Um das deutlicher zu machen, sind die "Inhalte" des Symlinks nichts anderes als der Name, auf den es zeigt. – wnoise

+1

@Ben: Meh, Shell ist eine Programmiersprache in den richtigen Händen, so dass die Unterscheidung nicht ganz klar ist. – ijw

+1

@ijw: Das stimmt. Allerdings müssen wir diese Zeile nicht genau festlegen, um herauszufinden, dass dies nicht auf der Programmiererseite liegt. Außerdem sind dies nicht einmal Shell-Befehle, "ls" und "readlink" sind beide separate Anwendungen. –

1

Versuchen

find . -type l -exec ls -la {} \; 
+0

Dieser Befehl findet alle Links, die im aktuellen Verzeichnis beginnen. Im Wesentlichen ist das ls-l dafür zuständig, den Inhalt jedes einzelnen zu zeigen. –

5

Sie können die readlink(2)-Funktion aufrufen, die den verknüpften Namen in einen Puffer setzt.

Beachten Sie, dass das Ergebnis eine Länge hat (im Rückgabewert gespeichert) und nicht NUL-terminiert ist. Wenn Sie es als Zeichenfolge verwenden möchten, fügen Sie eine NUL selbst an.

meisten höhere Ebene/Skriptsprachen wie Perl oder Python, einen Readlink-Wrapper bieten, die zu dem üblichen Sprechen entsprechende String-Typen konvertiert, so dass Sie nicht durch Details wie NUL-Beendigung belästigt werden.

Verwandte Themen