有没有办法让文件 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')