Saya sedang mengerjakan sistem HP-UX dan saya ingin mencari apakah ada tautan simbolik melingkar.
Sejauh ini saya menggunakan perintah:
ls -lrt `find ./ -follow -type l`
Tapi itu hanya melakukan ls-lrt pada direktori saat ini sebagai hasilnya.
Perintah apa yang harus saya gunakan untuk menemukan semua tautan simbolik melingkar dalam suatu sistem?
unix
find
symbolic-link
hp-ux
Vladimir
sumber
sumber
find
perintahnya hanya mencetak.
atau tidak mencetak apa-apa (jadi Anda hanya menjalankanls -lrt
atauls -lrt .
) Tidak cukup tahu tentang HP-UXfind
untuk memberi tahu Anda bagaimana cara memperbaikinya (mungkin itu membutuhkan eksplisit-print
? ). 2) Apa maksudmu "melingkar"?./a -> ./b
dan./b -> ./a
? Bagaimana dengan/home/foo/a -> /home
? Atau/home/foo/a -> /home/bar
dan/home/bar/b -> /home/foo
?-follow
memberi saya beberapa tautan nyata adalah hasil?-follow
,find
periksa tautannya sendiri, bukan file yang ditunjuknya. Jadi,find . -type l
mencetak hal-hal yang merupakan tautan (karena adanya-type l
) tanpa melihat apa yang mereka tunjuk (yang akan berupa file atau direktori atau tautan lain yang menunjuk ke file atau direktori).Jawaban:
Halaman manual GNU find mengatakan bahwa semua temuan POSIX seharusnya mendeteksi loop sistem file dan memancarkan pesan kesalahan dalam kasus-kasus ini, dan saya telah menguji
pada GNU find, yang dapat menemukan loop formulir
./a -> ./b
dan./b -> ./a
mencetak kesalahan(ini juga berhasil
a->b->c->a
)Demikian juga, loop formulir
./foo/x -> ..
dan./foo/a -> ./bar
+./bar/b -> ./foo
mencetak kesalahanJika Anda ingin melakukan sesuatu dengan output selain membacanya, Anda perlu mengalihkannya dari stderr ke stdout dan mengirimkannya ke beberapa skrip yang dapat menguraikan pesan kesalahan.
sumber
-follow
, ya.ls
mendapatkan tautan yang sebenarnya bukan saat tidak menggunakan-follow
?ls
perintah menggunakan output darifind
perintah Anda .find
Perintah Anda tidak mencetak apa pun, jadi shell Anda dijalankanls
tanpa apa-apa, yang mencantumkan direktori saat ini.