ls -F 命令不一致

ls -F 命令不一致

跑步ls --help对于澄清什么并没有多大帮助ls -F

-F, --classify 将指示符(*/=>@| 之一)附加到条目。

因此,我提到线程来找出答案,其答案指出

-F 在每个目录路径名后立即显示斜杠 ('/')、在每个可执行文件后显示星号 ('*')、在每个符号链接后显示 at 符号 ('@')、在每个空白后显示百分号 ('%')、在每个套接字后显示等号 ('='),并在每个 FIFO 后显示竖线 ('|')。

假设它是正确的,我不明白为什么我得到的输出ls -F是:

'List 1.pdf'*  'List 2.pdf'*  'List 3.pdf'*  'List 4.pdf' 'List 5.pdf'* 'List 6.pdf'

既然它们都是 pdf 文件,为什么有些文件被标记为可执行文件?难道不应该都以同样的方式标记吗?

答案1

既然它们都是 pdf 文件,为什么有些文件被标记为可执行文件?难道不应该都以同样的方式标记吗?

具有‘可执行’标记不是由于它们是 PDF 文件而引起的,也不依赖于它们是 PDF 文件!

反而,ls如果文件的权限为任何组设置 +x 位。也就是说,如果您ls -l在相同的文件上运行,您将看到rwxr-xr-x而不是rw-r--r--。您可以使用 更改此设置chmod

然而,这是将 PDF 文件标记为“可执行”是完全没有意义的,因为它实际上没有任何操作系统可执行代码(如果您尝试实际执行任何这些文件,您会收到某种错误消息)。

它们拥有 +x 权限位的最可能原因是意外:要么是因为您从 Windows 磁盘复制了它们(因为 Windows 默认在所有文件上设置 +x),要么是因为从根本不存储文件权限的其他类型的存储中复制了它们(例如 FAT32 USB 记忆棒)。

(FAT32 磁盘是否会在 Linux 上显示具有 +x 或 -x 的文件取决于挂载选项,例如“fmask=0133”。不幸的是,fmask=0 是默认值,导致 +x 无用。)

相关内容