문제

AIX의 Kornshell (KSH) 아래에서 실행하기 위해 쉘 스크립트를 작성하고 있습니다. 사용하고 싶습니다 mkdir 명령 디렉토리를 작성하십시오. 그러나 디렉토리는 이미 존재할 수 있으며,이 경우 아무것도하고 싶지 않습니다. 따라서 디렉토리가 존재하지 않는 것을 테스트하거나 "파일이 존재하는"오류를 억제하고 싶습니다. mkdir 기존 디렉토리를 만들려고 할 때 던졌습니다.

이 작업을 가장 잘하는 방법에 대한 생각이 있습니까?

도움이 되었습니까?

해결책

노력하다 mkdir -p:

mkdir -p foo

이것은 또한 존재하지 않는 중간 디렉토리를 생성합니다. 예를 들어,

mkdir -p foo/bar/baz

디렉토리를 만들 것입니다 foo, foo/bar, 그리고 foo/bar/baz 그들이 존재하지 않는다면.

GNU와 같은 일부 구현 mkdir 포함 mkdir --parents 더 읽기 쉬운 별칭으로서, 이것은 POSIX/Single UNIX 사양에 지정되지 않았으며 MACOS, 다양한 BSD 및 다양한 상용 유닉스와 같은 많은 일반적인 플랫폼에서는 사용할 수 없으므로 피해야합니다.

부모 디렉토리가 존재하지 않을 때 오류를 원하고 디렉토리가 존재하지 않으면 디렉토리를 작성하려면 test 디렉토리의 존재는 먼저 :

[ -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 -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

오류 메시지를 표시하지 않으려면 다음과 같습니다.

[ -d newdir ] || mkdir newdir

자신의 오류 메시지를 표시하려면 다음과 같습니다.

[ -d newdir ] && echo "Directory Exists" || mkdir newdir

오래된 시도와 진실

mkdir /tmp/qq >/dev/null 2>&1

다른 솔루션 중 많은 사람들이 가지고있는 경주 조건으로 원하는 것을 할 것입니다.

때로는 가장 단순하고 가장 추악한 솔루션이 최고입니다.

mkdir foo 디렉토리가 존재하더라도 작동합니다. "foo"라는 디렉토리가 존재하지 않는 경우에만 작동하려면 -p 깃발.

예시 :-

mkdir -p foo

"FOO"라는 디렉토리가 존재하지 않는 경우에만 만들어집니다. :)

directory_name = "foo"

if [ -d $directory_name ]
then
    echo "Directory already exists"
else
    mkdir $directory_name
fi

또는 먼저 존재를 확인하려면 :

if [[ ! -e /path/to/newdir ]]; then
            mkdir /path/to/newdir
fi

-이자형 Korn Shell의 존재 테스트입니다.

Korn Shell 매뉴얼을 검색 할 수도 있습니다.

MKDIR은 Windows 8+ 시스템에서 더 이상 -P 스위치를 지원하지 않습니다.

당신은 이것을 사용할 수 있습니다 :

IF NOT EXIST dir_name MKDIR dir_name

if loop을 사용하여 디렉토리를 작성하는 것보다 종료되지 않은 경우 디렉토리가 존재하는지 확인할 수 있습니다.

1) dir =/home/dir_name

if [ ! -d $dir ]
then
     mkdir $dir
else
     echo "Directory exists"  
fi

2) 디렉토리는 -p 옵션을 사용하여 mkdir를 사용하여 디렉토리를 만들 수 있습니다. 디렉토리를 사용할 수 없는지 확인합니다.

mkdir -p $dir

mkdir -p는 또한 디렉토리의 트리 구조를 만들 수 있습니다. 동일한 명령을 사용하여 부모 및 자식 디렉토리를 만들려면 mkdir -p를 선택할 수 있습니다.

mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2

이것은 단순한 기능 (Bash Shell)으로 디렉토리가 존재하지 않으면 디렉토리를 만들 수 있습니다.

#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
    if [ ! -d $1 ]
        then
        mkdir -p $1
    fi
}

위의 기능을 다음과 같이 호출 할 수 있습니다.

CreateDirectory/TMP/Foodir/Bardir

위의 것은 Foodir와 Bardir가 존재하지 않으면 생성합니다. MKDIR 명령의 "-p"옵션을 재귀 적으로 생성합니다. 도움이 되었기를 바랍니다.

Man Page 참조 man mkdir 옵션을 위해 -p

   -p, --parents
          no error if existing, make parent directories as needed

주어진 경로에서 모든 디렉토리를 생성합니다. 존재하면 오류가 발생하지 않으면 주어진 경로에서 모든 디렉토리를 생성합니다. 아래 명령을 시도하십시오. 디렉토리 newdir 그리고 anotherdir 이 명령을 발행하기 전에 존재하지 않습니다

올바른 사용법

mkdir -p /tmp/newdir/anotherdir

명령을 실행하면 볼 수 있습니다 newdir 그리고 anotherdir /tmp에서 만들어졌습니다. 당신은 당신이 원하는 만큼이 명령을 발행 할 수 있습니다. 명령은 항상 exit(0). 이러한 이유로 대부분의 사람들은 실제 경로를 사용하기 전에 쉘 스크립트 에서이 명령을 사용합니다.

mkdir -p sam
  • mkdir = 디렉토리 만들기
  • -p = -양자
  • (기존의 경우 오류 없음, 필요에 따라 부모 디렉토리를 만드십시오)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top