[리눅스] cd 명령어: 디렉터리 이동
cd 명령어는 리눅스 셸에서 작업 디렉터리를 변경하는 명령어입니다. 이를 이해하기 위해서는 크게 리눅스의 디렉터리 구조와 작업 디렉터리(working directory) 개념을 이해해야합니다. 리눅스의 디렉터리 구조 기초에 대해서는 다음 글을 참고해주세요.
- 관련 글: 루트 디렉터리와 디렉터리 구조
이 글에서는 작업 디렉터리의 기본적인 원리와 cd 명령어 사용법에 대해서 소개합니다.
리눅스의 작업 디렉터리 이해하기
리눅스의 커맨드라인에서 작업할 때는 셸을 사용합니다. 사용자는 셸에서 어떤 명령어를 실행할 때 특정 디렉터리에서 실행을 하게 됩니다. 명령어가 실행되는 이 디렉터리를 작업 디렉터리(Working Directory)라고 부릅니다. 그리고 현재 작업 디렉터리를 확인하는 명령어가 바로 pwd
입니다.
$ pwd
/home/lainyzine
다음과 같이 출력되었다면, 현재 작업 디렉터리는 /home/lainyzine
입니다.

pwd
명령어에 대한 자세한 해설은 다음 글에서 소개합니다.
pwd
의 결과에서 알 수 있듯이 리눅스 명령어는 현재 작업 디렉터리를 기준으로 실행됩니다. pwd
의 결과도 작업 디렉터리를 기준으로 합니다. ls
명령어를 인자 없이 실행하면 작업 디렉터리의 파일 목록을 출력해줍니다. 파일을 복사하거나 이동하는 cp
와 mv
도 작업 디렉터리를 기준으로 파일의 위치를 지정합니다.
cd 명령어: 작업 디렉터리 이동
cd
명령어를 사용하면 현재 작업 디렉터리를 변경할 수 있습니다. cd
명령어는 첫 번째 인자로 이동할 경로명([PATH]
)을 넘겨받습니다.
cd [PATH]
예를 들어 /etc
로 이동하고 싶다면 cd /etc
를 실행하면 됩니다.
$ cd /etc
$ pwd
/etc

성공적으로 디렉터리를 이동했습니다. 이번에는 /home/lainyzine/documents
로 이동해보겠습니다.
$ cd /home/lainyzine/documents
$ pwd
/home/lainyzine/documents

이번에도 성공적으로 디렉터리가 변경되었습니다. 존재하지 않는 디렉터리로 이동하려고 하면 어떻게 될까요?
$ cd /not_exist
cd: no such file or directory: /not_exist
$ pwd
/home/lainyzine/documents
디렉터리 이동에 실패하고 작업 디렉터리는 변경되지 않습니다.
cd
는 아주 간단한 명령어라서, 리눅스 디렉터리 구조와 작업 디렉터리 개념만 이해한다면 충분히 활용할 수 있습니다. 그리고 셸에서 모든 작업의 기본이 되기 때문에 반드시 알아두어야합니다.
절대 경로와 상대 경로
지금까지 사용한 경로 방식이 절대 경로입니다. 절대 경로는 /
에서 시작해서 하위 디렉터리를 슬래시(/
)로 구분해주는 방식입니다. 이와 달리 작업 디렉터리를 기준으로 상대적인 위치를 표기하는 상대 경로 방식도 자주 사용합니다. 예를 들어서 ..
은 바로 위의 디렉터리를 의미합니다.
/home/lainyzine/documents
에서 /home/lainyzine
으로 이동하기 위한 절대 경로와 상대 경로를 생각해보시기 바랍니다. 절대 경로는 그대로 /home/lainyzine/
으로 이동하면 됩니다.
$ pwd
/home/lainyzine/documents
$ cd /home/lainyzine/
$ pwd
/home/lainyzine
상대 경로 방식을 사용한다면 ..
을 인자로 넘겨주면 됩니다.
$ pwd
/home/lainyzine/documents
$ cd ..
$ pwd
/home/lainyzine
훨씬 간단하죠? /home/lainyzine/documents
에서 /home
으로 이동하고 싶다면 상대경로 ../..
를 사용하면 됩니다.
$ pwd
/home/lainyzine/documents
$ cd ../..
$ pwd
/home

중요한 건 절대경로는 작업 디렉터리와 무관하게 동일하지만, 상대 경로는 작업 디렉터리의 위치에 따라 달라진다는 점입니다.
특수한 이름의 경로
cd
의 인자에는 절대경로나 상대경로를 지정하는 것이 일반적입니다. 예를 들어 /etc
로 이동하고 싶다면 cd /etc
를 입력합니다. 이러한 절대경로와 상대 경로 외에도 특수한 경로들이 있습니다. 예를 들어 현재 사용자의 홈 디렉터리로 이동하고 싶을 때는 ~
를 사용합니다.
$ pwd
/etc
$ whoami
lainyzine
$ cd ~
$ pwd
/home/lainyzine
자주 사용되는 표현이니 반드시 익혀두시기 바랍니다. ~
외에도 현재 사용자의 홈디렉터리 경로를 담은 변수 $HOME
도 있습니다. 아래 두 명령어는 사실상 같습니다.
$ cd $HOME
$ cd ~
다른 사용자의 홈 디렉터리로 이동하고자 하는 경우 ~
뒤에 사용자 이름을 붙여줍니다.
$ cd ~anotheruser
.
과 ..
도 경로로 사용할 수 있습니다. 앞서 상대 경로를 다룰 때 ..
이 상위 디렉터리를 사용한다는 것을 살펴보았습니다. .
은 현재 디렉터리를 나타내며 상대경로에서 현재 위치를 강조할 때 사용합니다. 예를 들어 아래 두 명령어 모두 현재 디렉터리 아래의 documents
디렉터리로 이동하라는 의미입니다.
$ cd documents
$ cd ./documents
바로 직전에 있었던 디렉터리로 이동할 때는 -
을 사용합니다. 간단한 예제를 살펴보겠습니다.
$ pwd
/home/lainyzine
$ cd /etc
$ pwd
/etc
$ cd -
/home/lainyzine
$ cd -
/etc
cd -
를 사용할 때는 실행결과로 최종 경로를 보여줍니다. TV 리모컨의 이전 채널과 유사하다고 생각해도 무방합니다.
추천 문서
여기까지 cd
명령어의 사용법을 알아보았습니다. 디렉터리와 관련된 명령어는 셸을 사용할 때 가장 기본이 되므로, 반드시 익혀두시기 바랍니다.
이 외에도 Lainyzine에서는 다양한 리눅스 명령어 사용법을 소개하고 있으니 참고해주세요.
- 관련 글:리눅스 명령어 총 정리