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

디렉토리를 복사하고 구조를 유지하기 위해 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”는별로 도움이되지 않습니다.



답변

그것은과 같은 install -D명령은 내가 원하는 사실이다.

맨 페이지 :

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

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


답변

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


답변

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

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