如何复制只读文件并使用单个 cp 命令使副本可写?

如何复制只读文件并使用单个 cp 命令使副本可写?

如何在 Linux 中复制只读文件并使用 Linux(Ubuntu 10.04)中的单个 cp 命令使副本可写?

--no-preserve 和 --preserve 似乎是不错的选择,只不过它们应该“和”模式标志,而我正在寻找的是可以“或”它们的东西(添加 +w 模式)。

更多细节:

我必须将 GIT 中的存储库导入 Perforce。我希望所有 Perforce 仓库文件都是只读的(Perforce 就是这样设计的),而从仓库文件派生/复制的所有其他文件都是可写的。目前,如果 Makefile 尝试复制只读文件,则派生文件也将是只读的。当 cp 第二次尝试覆盖只读文件时,这会导致构建错误。当然,--force 是一种解决方法,但派生文件也是只读的。另外,我不想在每个“cp”命令后都使用“chmod”——我只会在万不得已的情况下才这样做。

答案1

你应该看看安装命令。

安装

SYNOPSIS
       install [OPTION]... [-T] SOURCE DEST
       install [OPTION]... SOURCE... DIRECTORY
       install [OPTION]... -t DIRECTORY SOURCE...
       install [OPTION]... -d DIRECTORY...

DESCRIPTION
       This  install  program copies files (often just compiled) into 
       destination locations you choose.  If you want to download and install
       a ready-to-use package on a GNU/Linux system, you should instead be 
       using a package manager like yum(1) or apt-get(1).

       In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to
       the existing DIRECTORY, while setting permission modes and owner/group.
       In  the  4th form, create all components of the given DIRECTORY(ies).
...
       -m, --mode=MODE
          set permission mode (as in chmod), instead of rwxr-xr-x

答案2

制作一个 cp1.sh 脚本,在每个 cp 后添加一个 chmod +w?:) 唯一的区别是该脚本不是原子的,但是我认为对于任何包含的属性更改,cp 原子性没有任何保证?

相关内容