当我搜索可以(半)控制亮度的文件时,我意外地发现了如下的嵌套目录序列
aneesh@nb-14:~$ cd /sys/class/graphics/fb0/device
aneesh@nb-14:/sys/class/graphics/fb0/device$ cd graphics/fb0/device
aneesh@nb-14:/sys/class/graphics/fb0/device/graphics/fb0/device$ l
driver@ graphics/ modalias power/ subsystem@ uevent
aneesh@nb-14:/sys/class/graphics/fb0/device/graphics/fb0/device$
/a/b/a/b/a/b...
,可以创建指向目录的链接/a
并将其粘贴到文件夹中/a/b
。这是形成嵌套序列的唯一方法吗?
从符号上看,这并不明显:为了验证这一点,我尝试给出命令l
(见上文),并找到了针对每个文件/目录的符号。我从这个论坛本身了解到,在结果中l
,符号@
用于指示驱动程序和/
目录。但没有符号指示表明某个文件夹实际上是指向另一个文件夹的链接!此外,没有手动输入来l
查找哪个符号(如果有)表示文件链接。
答案1
您看到的循环(嵌套)实际上具有非常重要的用途。
想象一下“给我与该设备相同的设备上的其他设备”。我知道这在视频卡环境中令人困惑,但想想声卡。
“给我与输出 5 同一张卡上的其他输出”
为了做到这一点,您需要某种“我父母的子女”,这正是您在这里所拥有的。“我父母的子女”可能只有 1 个条目,但这是可以的。
更复杂的是,/sys 文件夹实际上并不存在。它是内核内容的枚举。因此,它有点像用于访问内核数据的“易于使用的 API”。因此,这不仅会导致像您的示例这样的情况,而且实际上没有文件,所以如果确实如此,那也没关系。
要查看某个文件是否是链接,您可以随时使用 ls -la 显示更详细的信息。但请记住,这些文件不是真实的,可能不是真正意义上的符号链接,因此完全有可能进行递归,而无需做任何“错误”的事情或使用链接等。