我在unix上的文件夹中使用了这个命令:
chmod -R go-rwx *
为了更改群组和其他人的权限。 这样做,许多文件变为绿色彩色,甚至是简单的数据文件。 为什么会这样?这是什么意思? 它会以一种糟糕的方式影响我的文件吗? 它们似乎现在正在工作,但我关注它们的一般功能。 谢谢!
答案 0 :(得分:4)
您提到的命令不太可能导致ls
以绿色打印文件。启用ls
颜色时,默认情况下可执行文件以浅绿色打印。由于chmod +R go-rwx
仅删除权限,因此无法将任何文件标记为可执行文件,因此不会将ls
打印为绿色。
相反,我认为原因是你必须输入一个不同的命令,这意外地将所有这些文件标记为可执行文件。这实际上很常见。以下是典型场景:您希望为所有用户创建一个目录,并且所有子目录都可读并且可以输入。所以你做chmod -R a+rx top_directory
。这有效,但作为副作用,您还为所有这些目录中的所有普通文件设置了可执行标志。如果启用了颜色,这将使ls
以绿色打印,并且它已经发生在我身上好几次了。您可以通过执行chmod -R a+rX top_directory
来避免这种情况,这只会为目录设置可执行位。
要使文件停止为绿色,必须清除这些可执行位。如果这些目录中的任何文件都不是可执行的,那么这很简单:
$ chmod -R a-x top_directory
$ chmod -R u+X top_directory
这将删除所有文件和目录的可执行标志,然后将其添加回目录(对于当前用户)。但是如果某些文件实际上应该是可执行的,那么你必须通过它们并手动修复它们,这可能很乏味。
将某些文件错误地标记为可执行文件不是一个大问题。他们仍将正常运作。它只是有点混乱,如果当前目录(.
)在您的$PATH
中,它们可能会显示在命令选项卡中。所以你可以放心地忽略这个问题。
答案 1 :(得分:1)
这是ls
功能:
- 颜色[= WHEN]
着色输出。默认为“始终”或可以是“从不”或“自动”。更多信息默认情况下使用颜色来区分文件类型,并使用--color = never。使用--color = auto时,仅当标准输出连接到终端时,ls才会发出颜色代码。 LS_COLORS环境变量可以更改设置。使用dircolors命令进行设置。
您可以尝试使用ls --color=never
,但不会再看到颜色了。
您可以使用dircolors -p
查看颜色配置
这是可执行文件配置所在的行:
# This is for files with execute permission:
EXEC 01;32
这只是为了帮助您识别文件类型,因此它不会以任何不好的方式影响您的文件。