스택큐힙리스트

만약 디렉토리가 이미 존재하지 않을 때만 mkdir 하는 방법은 무엇인가요? 본문

카테고리 없음

만약 디렉토리가 이미 존재하지 않을 때만 mkdir 하는 방법은 무엇인가요?

스택큐힙리스트 2023. 3. 17. 16:28
반응형

저는 AIX에서 KornShell(ksh) 하에서 동작하는 쉘 스크립트를 작성하고 있습니다. mkdir 명령어를 사용하여 디렉토리를 만들고 싶습니다. 하지만 디렉토리가 이미 존재할 수 있으므로, 아무것도 하지 않기를 원합니다. 그러므로 디렉토리가 존재하지 않는지를 테스트하거나, mkdir가 이미 존재하는 디렉토리를 만들 때 던지는 파일이 존재합니다 오류를 억제하고 싶습니다.

어떻게 가장 잘 해야 할까요?

답변 1

mkdir -p을(를) 시도해보세요.

mkdir -p foo

이는 존재하지 않는 중간 디렉토리도 만듭니다. 예를 들어,

mkdir -p foo/bar/baz

존재하지 않으면 foo, foo/bar, foo/bar/baz 디렉토리를 만들겠습니다.

GNU 등의 일부 구현체는 mkdir 같은 것을 더 가독성 있게 표현하는 mkdir --parents와 같은 별칭을 사용합니다. 하지만 이는 POSIX/Single Unix Specification에서 명시되지 않았으며 macOS, 다양한 BSD 및 다양한 상용 Unix와 같은 많은 일반적인 플랫폼에서 사용할 수 없으므로 피해야 합니다.

부모 디렉토리가 없는 경우 오류를 원하고 디렉토리가 없으면 디렉토리를 만들고 싶다면, 먼저 디렉토리의 존재 여부를 test 검사할 수 있습니다.

[ -d foo ] || mkdir foo

답변 2

프로그래밍에서 많은 경우 조건문이 필요하다. 만약 디렉토리가 아직 존재하지 않는 상태에서만 새로운 디렉토리를 만들고 싶다면, 이러한 조건문이 필요할 것이다. 이를 위해서는 먼저 디렉토리가 존재하는지 확인해야 한다.

이를 위해서는 우선 파일시스템에 접근해야 한다. 파일시스템에 접근하려면 os 모듈을 사용해야 한다. os 모듈을 사용하면 파일시스템을 읽거나 쓸 수 있다.

mkdir() 함수를 호출했을 때 디렉토리가 이미 존재하는 경우, 에러가 발생할 것이다. 이러한 에러를 방지하기 위해서는 먼저 디렉토리가 존재하는지 확인해야 한다. 이를 위해 os 모듈의 path.exists() 함수를 사용할 수 있다. path.exists() 함수는 파일이나 디렉토리가 존재하는지 확인하여 True 나 False 를 반환한다.

따라서 mkdir() 함수를 호출하기 전에 path.exists() 함수로 디렉토리가 존재하는지 확인하고, 존재하지 않을 때만 mkdir() 함수를 호출하면 된다. 이를 통해 디렉토리가 이미 존재하는 경우 에러를 방지할 수 있다.

종합적으로, 프로그래밍에서 디렉토리를 생성할 때, 디렉토리가 이미 존재하는 경우 에러가 발생하는 것을 방지하기 위해 os 모듈의 path.exists() 함수를 사용하여 디렉토리가 존재하는지 확인하고, 존재하지 않을 때만 mkdir() 함수를 호출하면 된다. 이를 통해 더 안정적인 코드를 작성할 수 있다.

반응형
Comments