在Server Fault上,如何列出符号链接链?(不是我的问题)讨论了列出所有符号链接并跟随它们的方法。为了使这可行,让我们首先考虑一个单独的目录。
我想编写一个简短的实用程序来完成这个任务。将符号链接对放入哈希表中,然后处理哈希表似乎很容易。
但是我可能会遇到以下情况:
我想编写一个简短的实用程序来完成这个任务。将符号链接对放入哈希表中,然后处理哈希表似乎很容易。
但是我可能会遇到以下情况:
ls -l
total 0
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 08:48 a -> b
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 08:48 b -> c
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:03 c -> a
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 trap -> b
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 x -> y
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 y -> b
显然,a->b->c
是一个循环,而陷阱点指向循环,但要知道x
是否指向循环,我需要跟随一位。
其中一种哈希表示为:
a => b
b => c
c => a
trap => b
x => y
y => b
但是,一旦我知道循环的内容,反向表示法更适合标记到错误的起始点的循环。
所以这里有几个问题:
- 散列表是代表符号链接的最佳结构吗?
- 分离文件系统图以告诉循环组件与树组件和带循环类型部件的分支的最佳方法是什么?
- 是否有比手动搜索所有起始点的所有循环更好的算法?
- 从图论角度来看 - 这种事情在 CPAN 中已经有了吗?如果没有,有哪些好的辅助模块?