Прапор GNU "встановити" -d - як це працює?


26

Я намагаюся написати правило makefile для копіювання каталогу, зберігаючи його структуру, і оскільки всі інші правила в наших файлах використовують 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

Гаразд, це звучить як те, що мені потрібно ... але прапори не мають сенсу. Як вказати каталог призначення для встановлення?

Я спробував зробити базовий тест, створивши довільну структуру каталогів на своєму локальному жорсткому диску:

~>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команда насправді є тим, чого я хочу.

Manpage:

-D створити всі провідні компоненти DEST, крім останнього, потім скопіюйте ДЖЕРЕЛ на DEST

Працює чудово, за винятком того, що вам потрібно вказати кожен файл окремо.


8
Я був схвильований до кінця, "ви повинні вказати кожен файл окремо". cp -r
Здогадуюсь,

7
Чи є команда встановлення еквівалентна cp -r?
Олександр

14

install -dпросто використовується для створення каталогів. Ви сказали йому створити два каталоги testта test2. testвже існувало, тому все, що потрібно було зробити, це зробити test2. Я не думаю, що installпідтримує копіювання цілих дерев каталогів; зазвичай використовується у файлах. Можливо, вам потрібно скористатисяcp


2
В основному, install -dце те саме, що, mkdirза винятком того, що ви можете вказати режим, власника, контекст SELinux і згрупувати всі відразу.
ZiggyTheHamster

0

Зазвичай, ви хочете встановити файли в потрібній папці, не повторюючи себе. Ви можете скористатися функцією пошуку та встановлення, щоб допомогти зберегти ваші сценарії встановлення більше ДУХОМ

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.