如何在Linux命令行中创建一个空文件,并保持相同的权限和所有权?

11

我需要创建一个新的空文件,并保持与源文件相同的权限和所有权(组和用户),就像cp -p FILE1 FILE1.bak的工作方式一样,但不实际复制内容。

我知道后续可以清空内容,但这似乎是浪费的。

我不能使用脚本——解决方案必须直接从命令行运行。


使用 statchmod 系统调用编写一个 C 程序? - Basile Starynkevitch
4个回答

26
touch newfile
chmod `stat -c %a originalfile` newfile
chown `stat -c %U originalfile`:`stat -c %G originalfile` newfile

将这些内容放入一个 shell 函数中,以便您可以“直接从命令行执行”。 - Noufal Ibrahim
但他不是说过“不能使用脚本”吗?(我不明白为什么)? - Basile Starynkevitch
我认为“chown `stat -c %U originalfile` newfile”应该改为“chown `stat -c %U originalfile`:`stat -c %G originalfile` newfile”,或者在chown之后加上“chgrp `stat -c %G originalfile` newfile”。在当前的解决方案中,没有考虑组权限。 - another.anon.coward
你好 - 你可以修改你的答案,以包括 chgrp stat -c %G originalfile newfile 吗? - siliconpi
嗨Māris - 你为什么删除了复制的访问权限? - siliconpi

8

使用

touch newfile
chmod --reference=oldfile newfile
chown --reference=oldfile newfile

3
cp --attributes-only --preserve=ownership


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接