디렉토리가 존재하지 않는 경우에만 Mkdir 실행

Abdullah Bukhari 2024년2월15일
  1. mkdir 명령 및 용도
  2. mkdir로 디렉토리 생성
  3. 존재하지 않는 경우에만 mkdir로 디렉토리 생성
  4. if 제어 구조와 함께 mkdir 사용
디렉토리가 존재하지 않는 경우에만 Mkdir 실행

이 기사에서는 mkdir과 디렉토리 생성 시 사용법에 대해 설명합니다. 만들고자 하는 디렉토리가 존재하지 않을 때 mkdir을 사용하는 방법에 대해 자세히 설명합니다.

mkdir 명령 및 용도

Unix/bash의 mkdir 명령은 make directory를 나타냅니다. 사용자가 폴더를 만들고 권한을 설정하는 등의 작업을 할 수 있습니다.

mkdir 명령을 실행하는 사용자는 지정된 경로에 디렉토리를 생성할 수 있는 충분한 권한이 있어야 합니다. 그렇지 않으면 권한 거부 오류가 발생할 수 있습니다.

mkdir로 디렉토리 생성

mkdir의 일반 구문은 다음과 같습니다.

mkdir <specified_option> directory_name
sudo mkdir <specified_option> directory_name # in case user doesn’t have permissions

mkdir을 사용하면 한 번에 여러 디렉토리를 만들 수도 있습니다. 이렇게 하려면 중괄호 안에 쉼표로 구분된 디렉토리 이름을 추가하십시오.

디렉토리 이름에 추가 공백을 포함하지 않도록 하십시오. 그렇지 않으면 디렉토리 이름에 공백이 포함됩니다. 아래 명령은 우리가 말한 내용을 보여줍니다.

mkdir {dir1,dir2,dir3} # here directory names are dir1, dir2 and dir3

mkdir로 디렉터리 생성

존재하지 않는 경우에만 mkdir로 디렉토리 생성

mkdir을 사용할 때의 한 가지 문제는 생성하려는 디렉토리가 이미 존재하는 경우의 오류입니다. mkdir이 존재하지 않는 경우 디렉토리를 만들기 때문에 bash 명령을 실행하는 것은 그다지 문제가 되지 않습니다. 그렇지 않으면 적절한 오류가 발생합니다.

그러나 반전이 있습니다. 사용자 지정 bash 셸을 코딩하려고 하고 기존 파일을 다시 만들려고 할 때 mkdir에서 오류가 발생하는 것을 원하지 않는다고 가정합니다. 그럼 당신은 무엇을합니까?

위를 방지하는 몇 가지 방법을 설명합니다.

[[ -d dir_name ]] || mkdir dir_name # option 1
mkdir -p dir_name # option 2
mkdir dir_name 2>/dev/null # option 3

존재하지 않을 때만 mkdir로 디렉토리 생성

첫 번째 옵션과 세 번째 옵션은 두 번째 옵션보다 더 권장됩니다. 두 번째 옵션은 동시 실행 중에 경합 상태에 빠질 수 있기 때문입니다. 세 번째는 stderror의 출력을 dev/null 파일로 리디렉션합니다.

운영 체제를 공부했다면 ppfdt 테이블(프로세스 파일 디스크립터 테이블)의 개념이 있습니다. 기본적으로 0개의 설명자는 stdin을 가리키고 하나의 설명자는 stdout을 가리키며 두 개의 설명자는 stderror를 가리킵니다.

/dev/null은 null 장치 파일로, 기록된 모든 것을 버리고 읽을 때 파일 끝 문자를 반환합니다. 진공청소기는 그 안에 던져진 모든 것을 빨아들이는 것과 같습니다.

즉, 여기에서 stderror를 사용하지 않는 파일로 리디렉션할 수 있지만 /dev/null이 더 권장됩니다.

if 제어 구조와 함께 mkdir 사용

이를 수행하는 또 다른 방법은 if 제어 구조를 사용하는 것입니다. 디렉토리가 존재하는지 확인하고 없으면 생성을 진행할 수 있습니다. 그렇지 않으면 아무것도 하지 마십시오.

아래 스크립트는 이에 대해 자세히 설명합니다.

if [ ! -d dir_name ]; then mkdir dir_name; fi

if 제어 구조와 함께 mkdir 사용

관련 문장 - Bash Directory