Common lisp 获取具有断开符号链接的目录中的目录项列表

Common lisp 获取具有断开符号链接的目录中的目录项列表,common-lisp,osx-yosemite,ccl,Common Lisp,Osx Yosemite,Ccl,我在Yosemite操作系统上使用CCL 当我使用例如 (directory "*") 目录中 /Users/Tom 用于列出所有目录项,但/Users/Tom包含断开的符号链接(例如,slime,其中链接到的目录不再存在) 被抛出 有没有办法在这样一个带有中断符号链接的目录中获取目录项列表?一个选项是使用非标准CCL扩展名:follow links nil。大多数实现都有类似于的附加选项。所以您想在列表中排除断开的符号链接吗?不一定。只需获取所有目录项的列表。检查它们是什么(文件/目录/符

我在Yosemite操作系统上使用CCL

当我使用例如

(directory "*")
目录中

/Users/Tom
用于列出所有目录项,但
/Users/Tom
包含断开的符号链接(例如,
slime
,其中链接到的目录不再存在)

被抛出


有没有办法在这样一个带有中断符号链接的目录中获取目录项列表?

一个选项是使用非标准CCL扩展名
:follow links nil
。大多数实现都有类似于的附加选项。

所以您想在列表中排除断开的符号链接吗?不一定。只需获取所有目录项的列表。检查它们是什么(文件/目录/符号链接(工作/代理)是另一个在cl中看起来不平凡甚至不可能完成的任务。好吧,我不知道语言,但这看起来像是一个异常处理问题。遗憾的是,不是:即使捕获了异常,也无法获得剩余的条目。什么可以重新启动?你是对的。我也尝试了这个方法,它可以工作-在REPL中有一些非常奇怪的行为如果从那里执行。但我认为应该存在一种CL标准方法。CLHS中没有详细指定
目录
的行为-但是默认情况下,
目录
不应该执行以下链接。
目录
被指定为返回与文件真实名称对应的路径名。大多数实现将truename解释为符号链接的目标。目录的典型行为与该解释一致。根据CLHS,您对truename的看法是正确的。不过,我认为,
目录
做的事情并不正确,因为它在当前形式下无法使用,感觉是错误的对我来说,似乎没有办法访问真正的目录条目。
File #P"/Users/Tom/slime" does not exist.
   [Condition of type CCL::SIMPLE-FILE-ERROR]