GNU GNU cài đặt cờ -d - nó hoạt động như thế nào?


26

Tôi đang cố gắng viết một quy tắc makefile để sao chép một thư mục, duy trì cấu trúc của nó và vì tất cả các quy tắc khác trong tệp tạo tệp của chúng tôi sử dụng install, tôi muốn nhất quán.

Trong trang web, nó nói:

TÓM TẮC

   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, nghe có vẻ như những gì tôi cần ... nhưng những lá cờ không có ý nghĩa. Làm thế nào để bạn chỉ định thư mục đích để cài đặt?

Tôi đã thử làm một bài kiểm tra cơ bản bằng cách tạo cấu trúc thư mục tùy ý trên đĩa cứng cục bộ của mình:

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

4 directories, 1 file

Và sau đó chạy install -dvà nhìn vào những gì đã được tạo ra:

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

0 directories, 0 files

Không có chuyện gì xảy ra!

ai đó có thể chỉ cho tôi phương hướng đúng không? Googling "gnu install -d flag" không mang lại cho tôi nhiều.

Câu trả lời:


18

Có vẻ như install -Dlệnh thực sự là những gì tôi muốn.

Trang web:

-D tạo tất cả các thành phần hàng đầu của DEST ngoại trừ cuối cùng, sau đó sao chép NGUỒN sang DEST

Hoạt động tuyệt vời, ngoại trừ bạn phải chỉ định từng tệp riêng lẻ.


8
Tôi đã rất phấn khích cho đến khi kết thúc, "bạn phải chỉ định từng tệp riêng lẻ". Đoán tôi sẽ gắn bó vớicp -r
dtmland

7
Lệnh cài đặt có tương đương với cp -rkhông?
Alexander

14

install -dchỉ được sử dụng để tạo thư mục. Bạn bảo nó tạo hai thư mục, testtest2. testđã tồn tại, vì vậy tất cả những gì nó cần làm là thực hiện test2. Tôi không nghĩ installhỗ trợ sao chép toàn bộ cây thư mục; nó thường được sử dụng trên các tập tin. Bạn có thể cần phải sử dụngcp


2
Về cơ bản, install -dgiống như mkdirngoại trừ việc bạn có thể chỉ định chế độ, chủ sở hữu, bối cảnh SELinux và nhóm tất cả cùng một lúc.
ZiggyTheroulette

0

Thông thường những gì bạn muốn là cài đặt các tập tin ở thư mục bên phải, mà không lặp lại chính mình. Bạn có thể sử dụng find và install để giúp giữ cho các script cài đặt của bạn DRY hơn

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.