GNU“ install” -d flag - มันทำงานยังไง?


26

ฉันพยายามเขียนกฎ makefile เพื่อคัดลอกไดเรกทอรีรักษาโครงสร้างและเนื่องจากกฎอื่น ๆ ทั้งหมดใน makefiles ของเราใช้installฉันต้องการให้สอดคล้องกัน

ใน manpage มันพูดว่า:

สรุป

   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

ไม่มีอะไรเกิดขึ้น!

ใครช่วยชี้ฉันในทิศทางที่ถูกต้องได้ไหม Googling "gnu install -d flag" ไม่ได้ให้อะไรฉันมากนัก

คำตอบ:


18

ดูเหมือนว่าinstall -Dคำสั่งจะเป็นจริงในสิ่งที่ฉันต้องการ

manpage:

-D สร้างองค์ประกอบนำทั้งหมดของ DEST ยกเว้นอันสุดท้ายจากนั้นคัดลอก SOURCE ไปยัง DEST

ใช้งานได้ดียกเว้นคุณจะต้องระบุทุกไฟล์แยกกัน


8
ฉันตื่นเต้นจนถึงตอนท้าย "คุณต้องระบุทุกไฟล์แยกกัน" คิดว่าฉันจะติดกับcp -r
dtmland

7
คำสั่ง install มีค่าเทียบเท่าcp -rหรือไม่?
Alexander

14

install -dใช้เพื่อสร้างไดเรกทอรี คุณบอกว่ามันจะสร้างสองไดเรกทอรีและtest อยู่แล้วดังนั้นสิ่งที่มันต้องทำก็ทำ ฉันไม่คิดว่าสนับสนุนการคัดลอกทรีไดเรกทอรีทั้งหมด ปกติจะใช้กับไฟล์ คุณอาจต้องใช้test2testtest2installcp


2
โดยทั่วไปinstall -dจะเหมือนกับmkdirว่าคุณสามารถระบุโหมดเจ้าของบริบท SELinux และกลุ่มทั้งหมดในครั้งเดียว
ZiggyTheHamster

0

โดยปกติสิ่งที่คุณต้องการคือการติดตั้งไฟล์ที่โฟลเดอร์ด้านขวาโดยไม่ต้องทำซ้ำด้วยตนเอง คุณสามารถใช้ค้นหาและติดตั้งเพื่อช่วยให้สคริปต์การติดตั้งของคุณแห้งมากขึ้น

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.