web-dev-qa-db-ja.com

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

ディレクトリをコピーし、その構造を維持するためのメイクファイルルールを記述しようとしています。メイクファイル内の他のすべてのルールは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」をグーグルにしても、あまり効果はありません。

27
ashgromnies

install -Dコマンドが実際に必要なコマンドのようです。

マンページ:

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

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

19
ashgromnies

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

14
Michael Mrozek

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

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