我注意到我有一个/usr/bin/dir
大部分行为类似于/usr/bin/ls
.我首先认为这对于来自 DOS/Windows 的人来说是一种方便。我以为这只是一个到 的软链接ls
,但我的第一个惊喜是这是一个单独的二进制文件:
$ ls -la /usr/bin/dir /usr/bin/ls
-rwxr-xr-x 1 root root 125736 Feb 7 2022 /usr/bin/dir
-rwxr-xr-x 1 root root 125736 Feb 7 2022 /usr/bin/ls
我的第二个惊喜是这些文件不一样:
$ md5sum /usr/bin/dir /usr/bin/ls
997a2268f6d68d4b3f309dce17b39261 /usr/bin/dir
c12515ea5d425b198c1e44d6470588af /usr/bin/ls
这是在:
$ uname -a
Linux ip-172-31-63-158 6.2.0-1017-aws #17~22.04.1-Ubuntu SMP Fri Nov 17 21:19:35 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
答案1
GNU Coreutils 文档中解释了这种差异。不幸的是ls
&的共享联机帮助页dir
没有明确说明这一点。
dir
相当于ls -C -b
;即默认文件按列列出,垂直排序,特殊字符用反斜杠转义序列表示。看
ls
。
选项-C
&的文档-b
也在那里。
-C
--format=vertical
按列列出文件,垂直排序,没有其他信息。ls
如果标准输出是终端,则这是默认值。它始终是程序的默认值dir
。 GNUls
使用可变宽度列以最少的行显示尽可能多的文件。
-b
--escape
--quoting-style=escape
使用字母和八进制反斜杠序列引用文件名中的非图形字符,就像 C 中使用的那样。