이번 시간에는 리눅스 mkdir 명령어에 대해서 알아보겠습니다.

 


 

 이 명령어는 디렉토리를 만듭니다. 새 폴더를 만들어요. cho의 홈 디렉토리에는 폴더가 요렇게 있어요.

 

 

 fonts와 jo_test, snap 등등이 있네요. 제 홈 디렉토리에 mkdir a 명령어를 입력해 보겠습니다.

 

 

 그러면, 제 홈 디렉토리에 a라는 폴더가 추가됩니다.

 

 

 이게 다입니다. 몇 가지 옵션이 더 있긴 하지만, 저는 옵션 없이 많이 쓰곤 했습니다.


 이렇게만 끝나면 시시하니, 공식 문서 (특히 세팅, 설치 가이드) 등에서 많이 볼 수 있는 것에 대해서 설명을 하겠습니다. 보통 폴더를 만든 후에, 해당 폴더로 이동하게 됩니다. a라는 디렉토리를 만들고, a로 이동하는 경우가 압도적으로 많은데요. 이 때 보통 mkdir a 명령어를 입력하고, cd a를 입력하게 됩니다. 그런데 이 둘을 한 번에 수행할 수 있는 방법이 없을까요? 먼저, 명령어 여러 개를 수행하기 위해서 쓸 수 있는 것은 && 입니다.

 

 예를 들어, ls && ll && ls를 입력하면, ls 명령어를 수행하고, ll 명령어를 수행하고 다시 ls 명령어를 수행하게 됩니다. 여러 명령어를 수행할 때 유용하니, mkdir을 하고 cd 명령어를 수행하게 할 때도 &&은 이용될 겁니다. 문제는 mkdir a를 했을 때, 그 다음에 cd 명령어를 사용하기 위해서는 a라는 인자를 가지고 와야 합니다.

 

 이 때 쓸 수 있는 것은 $_인데요. 이것은 마지막에 실행된 명령어의 마지막 인자로 대체됩니다. 예를 들어보겠습니다.

 


 먼저 cat 1을 수행한 다음에 echo $_를 입력해 보겠습니다.

 

 echo $_를 입력했을 때 1이 나왔는데요. 이는 마지막에 수행된 명령이 cat 1이였고, 이것의 마지막 인자가 1이였기 때문입니다.

 

 

 다시, 이 경우는 어떨까요? cat 1 && echo $_. 이것은 cat 1이 수행되고 echo $_가 수행된 것과 같습니다. cat 1에서 마지막 인자는 1이므로, 뒤에 있는 echo $_가 echo 1로 대체되게 됩니다. 따라서, 1의 내용인 abc가 출력되고 1이 출력되게 됩니다. 그러면 폴더를 만들고, 새로 만들어진 폴더로 이동하려면 어떻게 입력하면 될까요? 예를 들어 디렉토리 test를 새로 만들고 test로 이동한다고 해 보겠습니다.

 

 mkdir test && cd $_를 입력하면 됩니다. 그러면, 마지막으로 수행된 명령어가 mkdir test이고, 마지막 인자가 test이므로 뒤에 오는 cd $_는 cd test로 대체되게 됩니다. 따라서 test 디렉토리를 만들고, test 디렉토리로 이동하게 될 겁니다. 

 

 실행 결과는 위와 같습니다. 조금 더 어려운 것도 해 볼까요? root로 로그인을 한 상태입니다. 현재 위치에 test2 디렉토리를 만들고, 소유자와 소유 그룹을 cho로 바꾼 다음에, test2로 이동하는 명령은 어떻게 작성하면 좋을까요? 첫 번째 명령은 디렉토리를 만드는 것이니, mkdir test2가 될 겁니다. 소유자를 바꾸는 것은 chown입니다.

 

 그러니 2번째 명령은 chown을 쓰면 되는데, 소유자가 cho, 그룹이 cho이므로 1번째 인자는 cho:cho가 옵니다. 다음에 2번째 인자는 test2가 와야 할 거니, $_로 받으면 됩니다. 3번째 명령은 이동 명령어인데, 2번째 명령의 마지막 인자가 test2였으므로, 3번째 명령은 cd $_로 받으면 됩니다.

 

 명령은 위와 같이 입력하면 됩니다.

 

 

 ls -ail로 .의 소유자와 소유 그룹을 확인해 보면 cho, cho임을 알 수 있습니다. 여기서 .은 현재 내 위치인 test2를 의미합니다. 올바르게 적용되었음을 알 수 있습니다. 이 질답글에서 언급된 last argument를 쓰는 트릭은 자주 쓰이는 것인 듯 싶습니다. 알아두면 도움이 될 듯 하네요.