web-dev-qa-db-fra.com

GNU "Installer" -D Drapeau - Comment ça marche?

J'essaie d'écrire une règle de Makefile pour copier un répertoire, en maintenant sa structure et, étant donné que toutes les autres règles de nos maquillages utilisent install, je voulais être cohérent.

Dans le Manpage, il dit:

SYNOPSIS

   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, cela ressemble à ce dont j'ai besoin ... mais les drapeaux n'ont pas de sens. Comment spécifiez-vous le répertoire de destination à installer?

J'ai essayé de faire un test de base en effectuant une structure de répertoire arbitraire sur mon disque dur local:

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

4 directories, 1 file

Puis en cours d'exécution install -d et regarder ce qui a été créé:

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

0 directories, 0 files

Rien ne s'est passé!

Est-ce que quelqu'un peut-il me montrer la bonne direction? Googling "gnu install -d drapeau" ne m'apporte pas beaucoup.

27
ashgromnies

Il ressemble à la install -D la commande est en fait ce que je veux.

Manpage:

-D Créer tous les éléments de premier plan de DESTS sauf le dernier, puis la source de copie sur DEST

Fonctionne génial, sauf que vous devez spécifier chaque fichier individuellement.

19
ashgromnies

install -d est juste utilisé pour créer des répertoires. Vous l'avez dit de créer deux répertoires, test et test2. test existait déjà, donc tout ce qu'il fallait faire était de faire test2. Je ne pense pas que install prend en charge la copie des arbres de répertoire entier; Il est normalement utilisé dans les fichiers. Vous devez probablement utiliser cp

14
Michael Mrozek