GNU“安装”-d 标志——它是如何工作的?

GNU“安装”-d 标志——它是如何工作的?

我正在尝试编写一个 makefile 规则来复制目录,维护其结构,并且由于我们的 makefile 中的所有其他规则都使用install,所以我希望保持一致。

在联机帮助页中,它说:

概要

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

   -d, --directory
          treat all arguments as directory names; create all components of
          the specified directories

好吧,这听起来像是我需要的......但是这些标志没有意义。如何指定要安装的目标目录?

我尝试通过在本地硬盘上创建任意目录结构来进行基本测试:

~>tree test
test
├── a
│   └── b
│       └── c
│           └── e.txt
└── d

4 directories, 1 file

然后运行install -d并查看创建的内容:

~>install -d test test2
~>tree test2
test2

0 directories, 0 files

什么都没发生!

有人能指出我正确的方向吗?谷歌搜索“gnu install -d flag”并没有给我带来太多。

答案1

看来这个install -D命令确实是我想要的。

联机帮助页:

-D 创建 DEST 除最后一个之外的所有主要组件,然后将 SOURCE 复制到 DEST

效果很好,除非您必须单独指定每个文件。

答案2

install -d仅用于创建目录。您告诉它创建两个目录,test并且test2.test已经存在,所以它需要做的就是制作test2.我不认为install支持复制整个目录树;它通常用于文件。你可能需要使用cp

答案3

通常您想要的是将文件安装在正确的文件夹中,而不需要重复自己。您可以使用查找和安装来帮助您的安装脚本更加干燥

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;

相关内容