答案1
正确的答案取决于您的 shell 采用的着色方案,但我认为可以从一些一般考虑因素来解释您所经历的行为:
- 输出中使用的颜色
ls
基于文件类型(通常由其扩展名标识,例如.png
、.zip
等)和文件/目录访问权限。 - 在许多 Linux 系统上,红色用于
- 指向不存在文件的符号链接(不太可能是您案例中的解释)
- 压缩文件,如
.zip
、.gz
和.bz2
- 另一方面,绿色通常用于设置了“执行权限”的文件。请注意,在“与权限无关”的文件系统(例如 FAT32(在 USB 记忆棒上很常见))上,默认设置“可执行”位,即存储在此类文件系统上的所有文件都被标记为可执行。
如果这些条件中的多个以“冲突的方式”应用,则结果取决于,但通常“权限”设置优先于“文件类型”设置。
在你的情况下,解释大概如下:
- 目录中的大多数文件
backup
都是从“与权限无关”的文件系统复制的,使用 或cp -p
,rsync -a
即以保留文件权限的方式复制,并设置了“执行”位。这就是为什么它们在输出中全部显示为绿色的原因ls
。 - 红色的文件
.tar.gz
来自默认情况下未设置“执行”位的文件系统,并且没有该位。然后根据文件类型进行着色,由于是压缩文件,所以将文件着色为红色。
如果您有兴趣了解更多信息,可以看看
- 这
man dir colors
联机帮助页 - Stack Exchange 上有以下指导性问题和答案:
答案2
在我的 Mac 上,红色文件名是由可执行文件引起的,您可以使用chmod -x my_file
.