ls 和 ls -l 哪个更有效?

ls 和 ls -l 哪个更有效?

据我了解,该ls命令调用getdents,它返回最多 x 个目录条目。是否还涉及其他系统调用?如果我运行ls -l,还会有更多的系统调用吗?我试图确定是否ls -l比 更昂贵,因此更慢ls

答案1

/bin/ls通常对输出进行排序。我不确定您的“高效”问题是否只是系统调用或已完成的整个工作,但/bin/ls -f可能会做最少的工作。它仅按目录顺序返回文件名。没有排序,没有额外的索引节点查找来获取元数据(就像ls -l会做的那样)。

另外,如果您的默认设置ls是着色,那么它可能会执行相当于ls -l无论如何的操作,以便它可以告诉如何为输出着色。

答案2

ls -l肯定更昂贵,因为它必须查询文件系统的元数据,例如所有者、组、权限、访问时间等。Vanilla/bin/ls只需要查找名字列出的目录中的条目数。

请注意,ls在您的系统上, 可能会被别名为比 更不普通的东西/bin/ls。跑去type ls看看是不是这样。

相关内容