Я работаю над системой 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 и передать его какому-нибудь скрипту, который может анализировать сообщения об ошибках.