Ich arbeite an einem HP-UX-System und möchte herausfinden, ob kreisförmige symbolische Links vorhanden sind.
Bisher benutze ich den Befehl:
ls -lrt `find ./ -follow -type l`
Es wird jedoch nur ls -lrt für das aktuelle Verzeichnis als Ergebnis ausgeführt.
Welchen Befehl soll ich verwenden, um alle kreisförmigen symbolischen Links in einem System zu finden?
unix
find
symbolic-link
hp-ux
Vladimir
quelle
quelle
find
Befehl entweder nur druckt.
oder nichts druckt (Sie führen also nurls -lrt
oder ausls -lrt .
). Sie wissen nicht genug über HP-UXfind
, um zu erfahren, wie Sie dies beheben können (möglicherweise ist ein explizites Verzeichnis erforderlich-print
?). ). 2) Was meinst du mit "Rundschreiben"?./a -> ./b
und./b -> ./a
? Was ist/home/foo/a -> /home
? Oder/home/foo/a -> /home/bar
und/home/bar/b -> /home/foo
?-follow
mir das Nichteinschließen von Links tatsächlich echte Ergebnisse?-follow
,find
den Link selbst untersucht, nicht die Datei verweist er auf. Sofind . -type l
druckt Dinge , die Links sind (weil sie-type l
) ohne auch nur einen Blick zu sehen , was sie zeigen auf (welche Dateien oder Verzeichnisse oder andere Verbindungen sein würde , die auf Dateien oder Verzeichnisse hingewiesen).Antworten:
Die Manpage von GNU find besagt, dass alle POSIX-Funde in diesen Fällen Dateisystemschleifen erkennen und Fehlermeldungen ausgeben sollen, und das habe ich getestet
auf GNU find, der in der Lage war, Schleifen des Formulars zu finden
./a -> ./b
und./b -> ./a
den Fehler auszudrucken(das hat auch geklappt
a->b->c->a
)Ebenso haben Schleifen des Formulars
./foo/x -> ..
und./foo/a -> ./bar
+./bar/b -> ./foo
die Fehler gedrucktWenn Sie etwas anderes mit der Ausgabe tun möchten, als sie zu lesen, müssen Sie sie von stderr zu stdout umleiten und an ein Skript weiterleiten, das die Fehlermeldungen auslesen kann.
quelle
-follow
ja.ls
Link bekommt, anstatt aktuelle Links zu bekommen, wenn man ihn nicht benutzt-follow
?ls
Befehl anhand der Ausgabe Ihresfind
Befehls auszuführen . Ihrfind
Befehl hat nichts gedruckt, daher wurde Ihre Shellls
mit nichts ausgeführt, wodurch das aktuelle Verzeichnis aufgelistet wird.