GNU “install” -d flag - nasıl çalışıyor?


26

Bir dizini kopyalamak, yapısını sürdürmek için makefile kuralı yazmaya çalışıyorum ve makefile dosyalarımızdaki diğer tüm kurallar kullanıldığından installtutarlı olmak istedim.

Manpage'de şöyle yazıyor:

ÖZET

   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

Tamam, ihtiyacım olana benziyor ... ama bayrakların anlamı yok. Yüklenecek hedef dizini nasıl belirlersiniz?

Yerel sabit diskime rasgele bir dizin yapısı yaparak temel bir test yapmaya çalıştım:

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

4 directories, 1 file

Ve sonra install -dneyin yaratıldığına bakarak koşarak :

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

0 directories, 0 files

Hiçbir şey olmadı!

Biri beni doğru yöne işaret edebilir mi? Googling "gnu install -d flag" bana fazla getirmiyor.

Yanıtlar:


18

install -DKomut aslında istediğim gibi görünüyor .

manpage:

-D son hariç DEST'in tüm önde gelen bileşenlerini oluşturun, sonra KAYNAK DEST'e kopyalayın

Her dosyayı ayrı ayrı tanımlamanız dışında, harika çalışıyor.


8
"Her dosyayı ayrı ayrı belirtmelisiniz" sonuna kadar heyecanlıydım. Tahmin edeyimcp -r
dtmland

7
İnstall komutunun karşılığı var mı cp -r?
Alexander,

14

install -dsadece dizin oluşturmak için kullanılır. İki dizin oluşturmasını söyledin testve test2. testzaten var, bu yüzden yapması gereken tek şey yapmaktı test2. installDizin ağaçlarının tamamını kopyalamayı desteklediğini sanmıyorum ; normalde dosyalarda kullanılır. Muhtemelen kullanman gerek.cp


2
Temel olarak, modu, sahibi, SELinux bağlamını ve grubunu bir kerede belirleyebilmeniz haricinde install -daynıdır mkdir.
ZiggyTheHamster

0

Genellikle istediğin, dosyalarınızı doğru klasöre kurmak, kendinizi tekrar etmeden. Kurulum komut dosyalarınızın daha DRY tutulmasına yardımcı olmak için find and install komutunu kullanabilirsiniz.

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.