获取一个文件的所有者,并将其应用于另一个文件

时间:2014-01-17 16:56:55

标签: linux bash

我在创建的脚本中有这一行

ls -l  ../$_module.php | awk '{print $3}'

只打印出文件的所有者。是否可以将$3分配给变量(让我们称之为_owner),这样我就可以运行了 脚本正在创建的文件上chmod $_owner $_con"Controller.php",因此$_con"Controller.php"$_module.php具有相同的所有者?

2 个答案:

答案 0 :(得分:4)

实际上,您希望chown(1)而非chmod(1)更改所有者。如果你在Linux上,你可能拥有的GNU chown有一个漂亮的选项--reference=file,它会将所有者更改为与引用文件中的所有者相同。


如果您坚持手动操作,或者chown没有该选项,您可以将输出存储为变量并使用:

owner=$(some comand)

但请注意,ls不保证稳定的输出,即您不应该依赖于格式。您可能希望使用stat,如PaulProgrammer建议的那样。

答案 1 :(得分:3)

您真的希望chown更改所有者,并且您可以使用stat -c %U /path/to/file获取所有者的用户名。使用反引号,您可以将stat的输出反馈到chown的输入中:

chown `stat -c %U module.php` target.php