GNU“install”-d 플래그 — 작동 방법


26

디렉토리를 복사하고 구조를 유지하기 위해 makefile 규칙을 작성하려고하는데 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명령은 내가 원하는 사실이다.

맨 페이지 :

-D 마지막을 제외한 DEST의 모든 주요 구성 요소를 작성한 후 SOURCE를 DEST로 복사하십시오.

모든 파일을 개별적으로 지정해야한다는 점을 제외하고는 효과적입니다.


8
"모든 파일을 개별적으로 지정해야합니다"라는 말까지 흥분되었습니다. 내가 고집 할 것 같아cp -r
dtmland

7
설치 명령은 다음과 동일 cp -r합니까?
Alexander

14

install -d디렉토리를 만드는 데 사용됩니다. 당신은 두 개의 디렉토리를 생성 할 말, test하고 test2. test이미 존재했기 때문에해야 할 일은 make test2입니다. install전체 디렉토리 트리 복사를 지원 하지는 않습니다 . 일반적으로 파일에서 사용됩니다. 아마도 사용해야 할 것입니다cp


2
기본적으로 모드, 소유자, SELinux 컨텍스트 및 그룹을 한 번에 지정할 수 있다는 점을 제외하고 install -d는 동일 mkdir합니다.
ZiggyTheHamster

0

일반적으로 원하는 것은 자신을 반복하지 않고 올바른 폴더에 파일을 설치하는 것입니다. 찾기 및 설치를 사용하여 설치 스크립트를 더 건조하게 유지할 수 있습니다.

find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.