在linux系统中使用unzip命令解压zip压缩包后,部分文件的名称会显示为绿色,这是终端根据文件属性自动匹配的颜色标识,和文件本身的权限设置直接相关。

linux终端文件颜色的基本规则
linux的终端默认会通过不同颜色区分不同类型的文件,方便用户快速识别文件属性,常见的颜色对应规则如下:
- 蓝色:目录文件
- 绿色:可执行文件
- 红色:压缩包文件
- 浅蓝色:链接文件
- 灰色:普通不可执行文件
解压zip后文件显示绿色,说明这些文件被设置了可执行权限,终端识别到可执行属性后就会用绿色标注。
解压后文件变绿色的具体原因
zip压缩包在打包时会保留原文件的权限信息,当在linux系统中解压时,unzip命令默认会还原这些权限。如果原文件在打包前就带有可执行权限,解压后自然就会显示为绿色。
另外如果解压时使用了-X参数之外的特殊权限保留参数,或者当前用户的umask设置比较宽松,也可能导致普通文件被意外赋予可执行权限,进而显示为绿色。
如何确认文件是否为可执行文件
可以通过ls -l命令查看文件的详细权限信息,判断文件是否真的具备可执行权限:
# 查看当前目录下所有文件的权限 ls -l # 输出示例 -rwxr-xr-x 1 user user 1024 1月 1 10:00 test.sh
权限字段的第一个字符表示文件类型,后面的9个字符分为三组,分别是所有者、所属组、其他用户的权限,其中x就代表可执行权限。如果权限字段中包含x,说明该文件确实是可执行文件,绿色显示符合规则。
不需要保留可执行权限的解决方法
如果确认这些绿色文件不需要可执行权限,可以通过以下方法去除:
单个文件去除可执行权限
# 去除test.sh的可执行权限 chmod -x test.sh
批量去除当前目录下所有文件的可执行权限
# 批量去除所有普通文件的可执行权限 chmod -x *
解压时直接不保留原文件的可执行权限
使用unzip命令时添加-X参数,可以不提取文件的额外权限信息,避免解压后文件带可执行权限:
# 解压时不保留原权限 unzip -X test.zip
需要保留可执行权限的情况
如果解压的是脚本、二进制程序这类本身就需要可执行的文件,绿色显示是正常的,不需要做任何调整,直接正常使用即可。如果不确定文件是否需要可执行权限,可以先查看文件内容,确认文件类型后再做处理。