Unix
如何找到循環符號連結?
我正在研究 HP-UX 系統,我想查找是否有任何循環符號連結。
到目前為止,我正在使用以下命令:
ls -lrt `find ./ -follow -type l`
但它只是在目前目錄上執行 ls -lrt 結果。
我應該使用什麼命令來查找系統中的所有循環符號連結?
GNU find 的聯機幫助頁說所有 POSIX 發現都應該檢測文件系統循環並在這些情況下發出錯誤消息,我已經測試過
find . -follow -printf ""
在 GNU find 上,它能夠找到表單的循環
./a -> ./b
並./b -> ./a
列印錯誤find: `./a': Too many levels of symbolic links find: `./b': Too many levels of symbolic links
(這也適用於
a->b->c->a
)同樣,表單的循環
./foo/x -> ..
和./foo/a -> ./bar
+./bar/b -> ./foo
列印錯誤find: File system loop detected; `./foo/a/b' is part of the same file system loop as `./foo'. find: File system loop detected; `./bar/b/a' is part of the same file system loop as `./bar'. find: File system loop detected; `./foo/x' is part of the same file system loop as `.'.
如果您想對輸出做一些事情而不是讀取它,您需要將其從 stderr 重定向到 stdout 並將其通過管道傳輸到一些可以解析錯誤消息的腳本。