Я работаю над системой HP-UX и хочу выяснить, существуют ли какие-либо круглые символические ссылки.
Пока что я использую команду:
ls -lrt `find ./ -follow -type l`
Но в результате он выполняет только ls -lrt для текущего каталога.
Какую команду я должен использовать, чтобы найти все круглые символические ссылки в системе?
unix
find
symbolic-link
hp-ux
Владимир
источник
источник
find
команда либо просто печатает,.
либо ничего не печатает (значит, вы только запускаетеls -lrt
илиls -lrt .
). Не знаете достаточно о HP-UX,find
чтобы рассказать, как это исправить (возможно, требуется явное-print
? ). 2) Что значит "круговой"?./a -> ./b
а./b -> ./a
? Как насчет/home/foo/a -> /home
? Или/home/foo/a -> /home/bar
а/home/bar/b -> /home/foo
?-follow
самом деле не дает мне некоторые реальные ссылки, результаты?-follow
,find
проверяет саму ссылку, а не файл, на который она указывает. Поэтомуfind . -type l
печатает вещи, которые являются ссылками (потому что они есть-type l
), даже не глядя на то, на что они указывают (которые могут быть файлами или каталогами или другими ссылками, указывающими на файлы или каталоги).Ответы:
Страница руководства GNU find говорит, что все находки POSIX должны обнаруживать петли файловой системы и выдавать сообщения об ошибках в этих случаях, и я проверил
на GNU find, который смог найти циклы формы
./a -> ./b
и./b -> ./a
распечатать ошибку(это также сработало
a->b->c->a
)Аналогично, циклы формы
./foo/x -> ..
и./foo/a -> ./bar
+./bar/b -> ./foo
напечатали ошибкиЕсли вы хотите что-то сделать с выводом, отличным от чтения, вам нужно будет перенаправить его из stderr в stdout и направить в какой-нибудь скрипт, который может анализировать сообщения об ошибках.
источник
-follow
, да.ls
вместо того, чтобы получать реальные ссылки, когда они не используются-follow
?ls
команду, используя вывод вашейfind
команды. Вашаfind
команда ничего не печатала, поэтому ваша оболочка выполненаls
без чего-либо, в которой указан текущий каталог.