ls -F/--classify 将每个文件标记为可执行文件

ls -F/--classify 将每个文件标记为可执行文件

ls -F分类全部我安装的分区上的文件作为可执行文件(它在文件名末尾附加一个星号)。

相同的命令在其他地方(例如我的主文件夹)可以正确执行,因此我不知道是什么导致它行为异常。

~
❯ cd /tmp && mkdir somefolder && cd somefolder

/tmp/somefolder 
❯ touch file{0..3}

/tmp/somefolder 
❯ ls -F
file0  file1  file2  file3

/tmp/somefolder 
❯ cd /mnt/sdd2 && mv /tmp/somefolder . && cd somefolder

/mnt/sdd2/somefolder 
❯ ls -F
file0*  file1*  file2*  file3*

有谁知道为什么会发生这种情况?

答案1

并非所有文件系统类型都支持文件权限。我怀疑你的不是这样,比如FAT32。在这些类型的文件系统上,Linux 默认将所有内容视为可执行文件,因为缺少执行位的可执行文件会破坏某些内容,但具有执行位的非可执行文件则不会。如果您不希望其中的任何文件可执行,可以通过使用fmask=0111mount 选项安装它来实现。 (或者fmask=0155或者fmask=0177如果您不希望组/其他人对任何文件具有写入或任何访问权限。)如果您希望某些文件具有执行位而不是其他文件,那么您必须擦除它并使用不同的权限重新格式化它不支持文件权限的类型,例如 ext4(但请注意,这样做将阻止其他操作系统(例如 Windows)在没有第三方驱动程序的情况下访问它)。

相关内容