GNU“ install” -dフラグ—どのように機能しますか?


26

ディレクトリをコピーするためのメイクファイルルールを作成し、その構造を維持しようとしています。メイクファイル内の他のすべてのルールはを使用するため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

OK、それは私が必要なもののように聞こえます...しかし、フラグは意味をなしません。インストール先のディレクトリをどのように指定しますか?

ローカルハードディスクに任意のディレクトリ構造を作成して、基本的なテストを実行しました。

~>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」を実行してもあまり意味がありません。

回答:


18

それは次のようになりますinstall -Dコマンドは、私が欲しいもの、実際にあります。

マンページ:

-D最後を除くDESTのすべての主要コンポーネントを作成し、SOURCEをDESTにコピーします

すべてのファイルを個別に指定する必要があることを除いて、うまく機能します。


8
「すべてのファイルを個別に指定する必要がある」という最後まで、私は興奮していました。私は固執すると思いますcp -r
-dtmland

7
installコマンドには同等のものがありcp -rますか?
アレクサンダー

14

install -dディレクトリを作成するためだけに使用されます。あなたは、2つのディレクトリを作成することを告げ、testtest2testすでに存在しているので、必要なのはmakeだけtest2です。installディレクトリツリー全体のコピーをサポートしているとは思わない。通常、ファイルで使用されます。おそらく使用する必要がありますcp


2
基本的にinstall -dは、mkdirモード、所有者、SELinuxコンテキスト、およびグループを一度に指定できることを除いて同じです。
-ZiggyTheHamster

0

通常、あなたが望むのは、自分自身を繰り返すことなく、正しいフォルダにファイルをインストールすることです。検索とインストールを使用して、インストールスクリプトをよりドライに保つことができます。

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.