Frage

Ist es möglich, den abolute Pfad des Link zu bekommen, dass es zeigt? Gibt es einen einfachen Systembefehl?

Ich brauche für alle folgenden OS HP-UX 11i, 1123u, 1123i AIX 5.2 und 5.3 Suse Linux 10 Solaris 10

War es hilfreich?

Lösung

Sie hat nicht angegeben, eine Sprache, so dass ich nehme an, Sie einen Befehl möchten, die in ausgeführt werden können, was auch immer Shell Sie verwenden. Der ls Befehl hat die -l (das ist ein ell) Option, die einen ausdruckt viele Informationen über die Datei. Die letzte Information ist der vollständige Pfad, so sollten Sie in der Lage sein zu sagen,

ls -l file | awk '{print $NF}'

auf jeder SUS2 konforme Maschine (die alle kommerziellen UNIX-Varianten sein soll). Dies wird ein Problem hat, wenn die Datei oder das eines der Verzeichnisse in die Dateibereiche hat allerdings führen.

Andere Tipps

Wenn Sie einen Systemaufruf suchen, Sie wollen readlink(2) . Dies ist standardisiert, und so sollte auf allen POSIX-konformen Systemen zur Verfügung.

Hier ist ein Beispiel für die Verwendung von der Verbindung genommen gegeben früher:

#include <unistd.h>

char buf[1024];
ssizet_t len;

if ((len = readlink("/modules/pass1", buf, sizeof(buf)-1)) != -1)
    buf[len] = '\0';

Wenn Sie sich für ein Kommandozeilenprogramm suchen, es sieht nicht wie es eine standardisierte, aber GNU (Linux) und BSD beide haben readlink(1).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top