HP-UXシステムで作業していますが、循環シンボリックリンクがあるかどうかを確認したいと思います。
これまでのところ、私はコマンドを使用しています:
ls -lrt `find ./ -follow -type l`
しかし、結果として現在のディレクトリでls -lrtを実行しているだけです。
システム内のすべての循環シンボリックリンクを見つけるには、どのコマンドを使用すればよいですか?
GNU findのマンページは、すべてのPOSIX findがファイルシステムループを検出し、これらの場合にエラーメッセージを出力するはずであると述べています。私はテストしました
find . -follow -printf ""
on 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にリダイレクトし、エラーメッセージを解析できるスクリプトにパイプする必要があります。