GNU “instalar” -d flag - como funciona?

25

Estou tentando escrever uma regra de makefile para copiar um diretório, mantendo sua estrutura e, como todas as outras regras em nossos makefiles usam install , eu queria ser consistente.

Na manpage, diz:

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, parece que eu preciso ... mas as bandeiras não fazem sentido. Como você especifica o diretório de destino para instalar?

Eu tentei fazer um teste básico criando uma estrutura de diretórios arbitrária no meu disco rígido local:

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

4 directories, 1 file

Em seguida, execute install -d e observe o que foi criado:

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

0 directories, 0 files

Nada aconteceu!

Alguém pode me apontar na direção certa? Pesquisando "gnu install -d flag" não está me trazendo muito.

    
por ashgromnies 22.09.2011 / 17:30

2 respostas

17

Parece que o comando install -D é realmente o que eu quero.

Manpage:

-D create all leading components of DEST except the last, then copy SOURCE to DEST

Funciona muito bem, exceto que você precisa especificar cada arquivo individualmente.

    
por 22.09.2011 / 17:48
12

install -d é usado apenas para criar diretórios. Você disse para criar dois diretórios, test e test2 . test já existia, então tudo que precisava fazer era fazer test2 . Eu não acho que install suporta copiar árvores inteiras de diretórios; é normalmente usado em arquivos. Você provavelmente precisará usar cp

    
por 22.09.2011 / 17:44

Tags