Unix 将文件权限设置为另一个文件

Unix 将文件权限设置为另一个文件

有没有办法让文件 A 具有与文件 B 完全相同的文件权限,而无需指定权限(如 777)。例如,我通常将ls文件 B 并检查其权限设置。然后“chmod ??? fileA”。但是,我正在寻找类似这样的命令

chmod --argument_to_copy_file_permission fileA fileB

请指教。

编辑:顺便问一下,是否有任何命令可以以数字模式查看文件权限(如 777),谢谢。

答案1

这在 Linux 中有效;我不确定程序或选项是否是 POSIX。

chmod `stat -c '%a' fileB` fileA

在 Mac OSX 上,以下操作大致相同,但使用有效的选项。:)

chmod `stat -f '%Op' fileB` fileA

(这是大写的“o”,而不是零。)

再说一遍,我不知道这是否是 POSIX。但我知道它在 Linux 上不起作用;-f 选项在那里意味着完全不同的东西。

无论哪种方式,这两个命令都通过获取文件 B 上的命令输出stat(特别是八进制格式的文件模式)并将其用作文件 A 上的设置模式来工作。这意味着反引号之间的内容将为您提供文件模式。

答案2

chmod --reference=fileA fileB应该按照手册页

答案3

这是一个非常简短的 perl 脚本:

my ($dev, $ino, $mode, @junk) = stat "fileA";
$mode &= 07777;  # mode includes type information in higher bits
printf "%o\n", $mode;
chmod $mode, "fileB";

让其将参数和选项留给读者练习......

答案4

这也是一个非常简短的 Python 脚本:

import os
os.chmod('fileA', os.stat('fileB').st_mode)

还有 Ruby:

File.chmod(File.stat('fileA').mode, 'fileB')

相关内容