그래서 나는 내 내용 중 일부를 포함하는 저장소를 가지고 있습니다.구성 파일makefile
내 홈 디렉토리에 설치하기 위해 하나를 만들려고 합니다 . 내가 겪고있는 문제는 bash에서 직접 다음 명령을 실행할 때입니다.
install -m 755 -d ~/path/to/dotfilesDir/ ~/
아무 일도 일어나지 않는 것 같아요
install -m 755 ~/path/to/dotfilesDir/{file1,file2,...} ~/
예상대로 작동합니다.
첫 번째(더 간단하고 깔끔한) 솔루션이 작동하지 않는 이유는 무엇입니까?
답변1
@Joseph R.의 답변부터 시작하여 그의 명령을 작동시킬 수 없었기 때문에 find와 함께 작동하도록 하는 솔루션은 다음과 같습니다. (그렇지 않다고 생각합니다. 규칙이 적용되기 때문입니다 \+
. 요소 뒤에는 아무것도 올 수 없습니다 {}
.) (댓글을 달 수 없습니다. 실제로 전체 단락이 삭제될 수 있습니다.)
모든 파일을 정확히 동일한 디렉터리(여기 target/directory
)에 복사하려면 다음을 수행하세요.
find directory/to/copy -type f -exec install -Dm 755 "{}" "target/directory" \;
-D
필수는 아니며 대상이 존재하지 않는 디렉터리만 생성됩니다.
현재 위치에서 시작하여 전체 디렉터리 계층 구조와 해당 파일을 복사하려면(빈 디렉터리는 생략됨):
find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;
이전에 언급한 것처럼 이렇게 하면 처음부터 트리가 다시 생성됩니다 $PWD
. 또한 빈 디렉터리를 복사해야 하는 경우 -type d
of 및 를 사용하는 find
방법을 찾을 수 있습니다 install -d
.
따라서 트리를 복사하려면 다음 디렉토리에서 시작하십시오 $PWD
.
(cd parent/directory && find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;)
어떻게 parent/directory
복사되지 않는지 확인하세요.
추가의
를 사용하는 경우 shell/fish
다음 줄은 동일한 작업을 수행합니다.
fish -c 'cd parent/directory; and find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \\;'
답변2
한눈에매뉴얼 페이지, install
당신이 원하는 것을 하지 않는 것 같습니다.
실제로 요약 섹션에서는 다음 형식의 사용법을 나타냅니다.
install [OPTION]... -d DIRECTORY...
나중에 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
-d, --directory
모든 인수를 디렉터리 이름으로 처리하여 지정된 디렉터리의 모든 구성 요소를 만듭니다.
그래서 제 생각에는 이 옵션의 핵심은 복잡한(그러나 비어 있는) 디렉토리 구조를 설치할 수 있다는 것입니다 mkdir -p ...
.
루프를 사용하여 원하는 것을 달성할 수 있습니다.
for file in /path/to/DotFiles/dir/*;do
install -m 755 "$file" ~/
done
또는 아래에 여러 수준이 있는 경우 다음을 /path/to/DotFiles/dir
사용할 수 있습니다 find
.
find /path/to/DotFiles/dir/ -type f -exec 'install -m 755 "{}" ~/' +
답변3
src 폴더와 그 안의 파일을 dst에 복사했지만 설치가 재귀 폴더 복사를 지원하지 않는 것 같습니다.
install -D src/* -t dst