GNU "install" -d flag - bagaimana cara kerjanya?

26

Saya mencoba menulis aturan makefile untuk menyalin direktori, mempertahankan strukturnya, dan karena semua aturan lain dalam makefile kami gunakan install, saya ingin konsisten.

Di halaman manual, tertulis:

RINGKASAN

   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, itu kedengarannya seperti yang saya butuhkan ... tetapi bendera tidak masuk akal. Bagaimana Anda menentukan direktori tujuan untuk menginstal?

Saya mencoba melakukan tes dasar dengan membuat struktur direktori sembarang pada hard disk lokal saya:

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

4 directories, 1 file

Dan kemudian berlari install -ddan melihat apa yang telah dibuat:

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

0 directories, 0 files

Tidak ada yang terjadi!

Adakah yang bisa mengarahkan saya ke arah yang benar? Googling "gnu install -d flag" tidak membawa saya banyak.

ashgromnies
sumber

Jawaban:

18

Sepertinya install -Dperintah itu sebenarnya yang saya inginkan.

Halaman manual:

-D buat semua komponen utama DEST kecuali yang terakhir, lalu salin SOURCE ke DEST

Berfungsi bagus, kecuali Anda harus menentukan setiap file satu per satu.

ashgromnies
sumber
8
Saya sangat senang sampai akhir, "Anda harus menentukan setiap file secara individual". Kira saya akan tetap dengancp -r
dtmland 8-15
7
Apakah perintah instal setara dengan cp -r?
Alexander
14

install -dhanya digunakan untuk membuat direktori. Anda mengatakannya untuk membuat dua direktori, testdan test2. testsudah ada, jadi yang perlu dilakukan hanyalah membuat test2. Saya tidak berpikir installmendukung menyalin seluruh pohon direktori; ini biasanya digunakan pada file. Anda mungkin perlu menggunakancp

Michael Mrozek
sumber
2
Pada dasarnya, install -dsama dengan mkdirkecuali bahwa Anda dapat menentukan mode, pemilik, konteks SELinux, dan grup sekaligus.
ZiggyTheHamster
0

Biasanya yang Anda inginkan adalah menginstal file di folder kanan, tanpa mengulangi diri Anda. Anda dapat menggunakan find dan install untuk membantu menjaga skrip instalasi Anda lebih KERING

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
tokek
sumber