LainyZine: 프로그래머 가이드 🐣

[리눅스] cd 명령어: 작업 디렉토리 이동

cd 명령어는 리눅스 셸에서 작업 디렉터리를 변경하는 명령어입니다. 이를 이해하기 위해서는 크게 리눅스의 디렉터리 구조와 작업 디렉터리(working directory) 개념을 이해해야합니다. 리눅스의 디렉터리 구조 기초에 대해서는 다음 글을 참고해주세요.

이 글에서는 작업 디렉터리의 기본적인 원리와 cd 명령어 사용법에 대해서 소개합니다.

리눅스의 작업 디렉터리 이해하기

리눅스의 커맨드라인에서 작업할 때는 셸을 사용합니다. 사용자는 셸에서 어떤 명령어를 실행할 때 특정 디렉터리에서 실행을 하게 됩니다. 명령어가 실행되는 이 디렉터리를 작업 디렉터리(Working Directory)라고 부릅니다. 그리고 현재 작업 디렉터리를 확인하는 명령어가 바로 pwd입니다.

$ pwd
/home/lainyzine

다음과 같이 출력되었다면, 현재 작업 디렉터리는 /home/lainyzine입니다.

현재 작업 디렉터리: /home/lainyzine/

pwd 명령어에 대한 자세한 해설은 다음 글에서 소개합니다.

pwd의 결과에서 알 수 있듯이 리눅스 명령어는 현재 작업 디렉터리를 기준으로 실행됩니다. pwd의 결과도 작업 디렉터리를 기준으로 합니다. ls 명령어를 인자 없이 실행하면 작업 디렉터리의 파일 목록을 출력해줍니다. 파일을 복사하거나 이동하는 cpmv도 작업 디렉터리를 기준으로 파일의 위치를 지정합니다.

cd 명령어: 작업 디렉터리 이동

cd 명령어를 사용하면 현재 작업 디렉터리를 변경할 수 있습니다. cd 명령어는 첫 번째 인자로 이동할 경로명([PATH])을 넘겨받습니다.

cd [PATH]

예를 들어 /etc로 이동하고 싶다면 cd /etc를 실행하면 됩니다.

$ cd /etc
$ pwd
/etc
현재 작업 디렉터리: /etc

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

$ cd /home/lainyzine/documents
$ pwd
/home/lainyzine/documents
현재 작업 디렉터리: /home/lainyzine/

이번에도 성공적으로 디렉터리가 변경되었습니다. 존재하지 않는 디렉터리로 이동하려고 하면 어떻게 될까요?

$ 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에서는 다양한 리눅스 명령어 사용법을 소개하고 있으니 참고해주세요.

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.