리눅스에서 mkdir는 디렉토리를 만드는 명령어입니다.
말 그대로 mkdir DIRECTORY는, DIRECTORY를 생성하는데 없으면 생성합니다. 있으면 어떻게 될까요? 혹은, 디렉토리를 만들려고 하는데 parent directory가 없는 경우에 어떻게 될까요? 이 케이스들을 각각 보면서 -p 옵션에 대해 이해해 보도록 하겠습니다.
먼저 -p는 이미 디렉토리가 존재하는 경우, 에러를 떨어트리지 않습니다. 그리고, 필요한 경우에 부모 디렉토리를 만듭니다. 이걸 역으로 보면 -p가 없다면 디렉토리가 존재하는 경우에 에러를 떨어트립니다. 그리고, 필요한 경우에 부모 디렉토리를 만들지 않을 겁니다.
현재 저는 test3에 들어와 있습니다.
mkdir t1으로, 디렉토리 t1을 만들었습니다. 그 다음에 tree 명령어로 확인해 보니, 제 현재 작업 위치에 t1이라는 디렉토리가 하나 추가되었음을 볼 수 있어요.
다시 mkdir t1을 입력해 봅시다. 그랬더니 오류가 뜹니다. 이미 t1이라는 것이, 제 작업 디렉토리에 있기 때문입니다. 이럴 때 에러 없이 가려면, -p 옵션을 주면 됩니다.
mkdir -p t1을 입력하면 아까와는 다르게, t1이 있음에도 불구하고 오류를 떨어트리지 않습니다. Makefile을 작성할 때 디렉토리를 생성해야 하는 경우가 있는데요. -p 옵션을 잘 알아두면 이미 있는 디렉토리 케이스를 처리할 수 있겠네요.
이제, 필요한 경우 parent directory를 생성한다는 말이 무슨 말인지 알아봅시다.
제 작업 디렉토리에서 mkdir t2/t1을 입력해 봅시다. 그러면, t2/t1을 생성할 수 없다고 뜨는데요. No such file or directory가 있어요. -p 옵션을 주지 않았을 때에는 필요한 경우에도 parent directory를 생성하지 않습니다.
즉, 필요한 경우에도 t2를 생성하지 않았기 때문에, t2 밑에 있는 t1을 생성하려고 할 때 오류가 발생합니다. 제 작업 디렉토리에 t2라는 폴더가 없었기 때문입니다.
-p 옵션을 주면 이야기가 달라집니다. t2/t1을 만든다고 했을 때, t1을 만들기 위해서는 부모 디렉토리인 t2가 필요해요.
필요한 경우 만든다고 했으니, 제 작업 디렉토리에 t2가 만들어집니다. 이제 t2의 자식인 t1을 생성하려고 할 때 오류가 발생하지 않습니다. 왜냐하면 폴더 t2가 있기 때문입니다. 디렉토리들을 계속 타고 타고 생성할 때에도 -p 옵션을 이용하면 매우 유용하게 쓸 수 있는 셈입니다.
'OS > 리눅스' 카테고리의 다른 글
리눅스 touch 명령어를 알아봅시다. (0) | 2023.01.17 |
---|---|
linux make phony target과 .phony에 대해 알아봅시다. (0) | 2023.01.09 |
리눅스 xargs 명령어에 대해 알아봅시다. (0) | 2022.12.05 |
grep 폴더 제외와 파일 제외와 결과에 나올 확장자를 설정하는 방법을 알아봅시다. (0) | 2022.12.04 |
리눅스 랜덤 문자열을 생성해 봅시다. (1) | 2022.11.28 |
최근댓글