디렉토리를 복사하고 구조를 유지하기 위해 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/{} \;