DIR이 아직 존재하지 않는 경우에만 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 --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 = -양자
- (기존의 경우 오류 없음, 필요에 따라 부모 디렉토리를 만드십시오)