GNU "installa" -d flag - come funziona?


26

Sto cercando di scrivere una regola di makefile per copiare una directory, mantenendo la sua struttura, e poiché tutte le altre regole nei nostri makefile usano install, volevo essere coerente.

Nella manpage, dice:

SINOSSI

   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, sembra quello di cui ho bisogno ... ma le bandiere non hanno senso. Come si specifica la directory di destinazione su cui installare?

Ho provato a fare un test di base creando una struttura di directory arbitraria sul mio disco rigido locale:

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

4 directories, 1 file

E poi correndo install -de guardando ciò che è stato creato:

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

0 directories, 0 files

Non è successo niente!

Qualcuno può indicarmi la giusta direzione? Googling "gnu install -d flag" non mi sta portando molto.

Risposte:


18

Sembra che il install -Dcomando sia effettivamente quello che voglio.

manpage:

-D crea tutti i componenti principali di DEST tranne l'ultimo, quindi copia SOURCE in DEST

Funziona alla grande, tranne che devi specificare ogni file singolarmente.


8
Ero entusiasta fino alla fine, "devi specificare ogni file individualmente". Immagino che rimarrò concp -r
dtmland l'

7
Il comando install ha un equivalente a cp -r?
Alexander

14

install -dè solo usato per creare directory. Gli hai detto di creare due directory teste test2. testesisteva già, quindi tutto ciò che doveva fare era fare test2. Non credo installsupporti la copia di interi alberi di directory; viene normalmente utilizzato sui file. Probabilmente devi usarecp


2
Fondamentalmente, install -dè lo stesso di mkdirtranne che è possibile specificare la modalità, il proprietario, il contesto SELinux e il gruppo contemporaneamente.
ZiggyTheHamster,

0

Di solito quello che vuoi è installare i file nella cartella giusta, senza ripetere te stesso. È possibile utilizzare trova e installa per aiutare a mantenere gli script di installazione più ASCIUTTI

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.