다음과 같은 결과가 있다고 가정합니다.
node_modules/
suman/
node_modules/suman
심볼릭 링크 입니다
이렇게 하면:
mkdir -p "$PWD/node_modules/suman"
mkdir -p가 심볼릭 링크를 덮어쓰지 않을 것이라고 가정합니까?
$PWD/node_modules
심볼릭 링크라면 어떨까요 ? 나는 또한 mkdir -p
심볼릭 링크가 디렉토리로 취급될 것이라고 가정하고 있습니까? 마지막으로 "node_modules"가 디렉터리 대신 파일에 심볼릭 링크되어 있으면 어떻게 될까요?
답변1
그것에 관해서는 처음 두 가지 하위 문제가 매우 분명해집니다 mkdir
.man
아직 디렉토리가 없으면 디렉토리를 작성하십시오.
파일 심볼릭 링크의 경우 간단한 실험으로 충분합니다.
$ touch a
$ ln -sr a A
$ mkdir -p A/b/c
mkdir: cannot create directory ‘A’: Not a directory
답변2
다른 답변에서 알 수 있듯이 심볼릭 링크인 경우 파일로 처리되어 실패합니다. 그러나 다른 사람이 심볼릭 링크를 디렉토리로 처리하는 솔루션을 찾고 있다면 다음 중 하나가 작동할 것입니다.
mkdir -p "$(realpath DIR)"
mkdir -p "$(readlink -f DIR)"
답변3
나는 node_modules가 $PWD에 디렉토리나 심볼릭 링크로 존재한다고 가정합니다(명시적으로 언급하지 않았습니다).
마지막 문제를 먼저 처리하십시오. node_modules가 파일(또는 파일에 대한 심볼릭 링크)인 경우 디렉토리로 작동하는 것을 허용하지 마십시오. 따라서 /suman을 하위 디렉터리로 가질 수 없으며
mkdir -p node_modules/anything
"디렉토리가 아님"으로 인해 실패합니다.
suman이 node_modules 디렉터리에 파일(또는 파일이나 디렉터리에 대한 링크 또는 심볼릭 링크)로 존재하는 경우
mkdir -p node_modules/suman
"파일이 존재합니다"로 인해 실패합니다.
suman이 node_modules 디렉터리에 디렉터리(또는 디렉터리에 대한 심볼릭 링크)로 존재하는 경우
mkdir -p node_modules/suman
오류는 생성되지 않지만 기존 디렉터리나 기호 링크는 덮어쓰지 않습니다.