디렉토리가 아직 없으면 mkdir 만 mkdir하는 방법은 무엇입니까?
질문
AIX에서 KornShell (KSH) 아래에서 실행할 쉘 스크립트를 작성하고 있습니다.mkdir 명령을 사용하여 디렉토리를 만들고 싶습니다.그러나 디렉토리는 이미 존재할 수 있습니다.이 경우 아무 것도하고 싶지 않습니다.그래서 디렉토리가 존재하지 않거나 기존 디렉토리를 작성하려고 할 때 mkdir가 발생하는 "파일이 존재"오류를 억제하기 위해 테스트하고 싶습니다.
어떻게해야합니까?
답변
mkdir -p를 시도하십시오 :
mkdir -p foo
또한 존재하지 않는 중간 디렉토리도 생성합니다.예를 들어,
mkdir -p foo/bar/baz
그들이 존재하지 않으면 디렉토리 Foo, Foo / Bar 및 Foo / Bar / BAZ를 만듭니다.
GNU MKDIR과 같은 일부 구현은 더 읽기 쉬운 별칭으로서 MKDIR - 심부모를 포함하지만, POSIX / SINGLE UNIX 사양에 명시되어 있지 않으므로 MACOS, 다양한 BSD 및 다양한 상용 UNIX와 같은 많은 공통 플랫폼에서는 사용할 수 없으므로 피해야합니다....에
상위 디렉토리가 없을 때 오류가 발생하지 않고 디렉토리가 존재하지 않으면 디렉토리를 작성하려는 경우 디렉토리의 존재 여부를 먼저 테스트 할 수 있습니다.
[ -d foo ] || mkdir foo
답변
이것은 일해야합니다 :
$ mkdir -p dir
또는:
if [[ ! -e $dir ]]; then
mkdir $dir
elif [[ ! -d $dir ]]; then
echo "$dir already exists but is not a directory" 1>&2
fi
디렉토리가 존재하지 않는 경우 디렉토리를 만듭니다. 그러나 작성하려는 디렉토리의 이름이 디렉토리 이외의 다른 것들에 의해 이미 사용 중이면 경고합니다.
답변
-p 플래그를 사용하십시오.
man mkdir
mkdir -p foo
답변
mkdir foo 디렉토리가있는 경우에도 작동합니다. "foo"라는 디렉토리가 존재하지 않는 경우에만 작동하려면 -p 플래그를 사용해보십시오.
예시:
mkdir -p foo
그러면 "foo"라는 디렉토리가 존재하지 않는 경우에만 생성됩니다.:)
답변
간단하고 침묵하고 치명적인 :
mkdir -p /my/new/dir >/dev/null 2>&1
답변
하나의 명령으로 복잡한 디렉토리 트리를 정의합니다
mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
출처:https://stackoverflow.com/questions/793858/how-to-mkdir-only-if-a-directory-does-not-already-exist
최근댓글