13.4. cd로 디렉토리 바꾸기

여러분이 현재 어디에 위치하는지 (현재 디렉토리가 어디인지)와 이동하고자 하는 디렉토리 사이의 관계를 알고 있다면, 디렉토리를 바꾸는 것은 매우 쉽습니다.

디렉토리를 바꾸기 위해서는, cd 명령을 사용합니다. 이 명령어만 입력하시면, 언제나 자동으로 홈 디렉토리로 돌아가게 됩니다; 다른 디렉토리로 이동하기 위해서는 경로명 (pathname)을 함께 입력해 주셔야 합니다.

절대 경로명 (absolute pathname) 과 상대 경로명 (relative pathname)을 사용할 수 있습니다. 절대 경로명은 처음에 (루트로 알려진) / 에서 시작한 다음에 요구한 디렉토리를 찾아 내려갑니다; 상대 경로명은 현재 디렉토리에서 시작하여 디렉토리가 위치하고 있을 장소를 살펴봅니다. 아래에 나온 디렉토리 구조(tree)는 cd 명령어의 용도를 설명하기 위한 예입니다.

/
/directory1
/directory1/directory2
/directory1/directory2/directory3

만일 현재 directory3에 위치하는 경우 directory1으로 이동하시려면, 디렉토리 구조 위로 올라가야 합니다.

다음 명령을 실행하십시오

cd directory1 

directory3에 위치하면서 위의 명령을 입력하시면, 그런 디렉토리가 없다는 오류 메세지가 나타납니다. 그 이유는 directory3 디렉토리에는 directory1라는 하부 디렉토리가 없기 때문입니다.

directory1로 이동하시려면, 다음과 같이 입력하시기 바랍니다:

cd /directory1 

이것은 절대 경로의 한 예입니다. 위 명령은 리눅스에서 맨 위에서 (/) 시작하여 directory1를 찾을 때 까지 디렉토리를 찾아 내려가라는 지시입니다. 만일 첫번째 문자가 / 이라면 이것은 절대 경로입니다. 그렇지 않으면, 상대 경로입니다.

절대 경로는 어느 디렉토리이든 상관없이 이동할 수 있지만, 상대 경로는 현재 디렉토리의 하위 디렉토리로만 이동할 수 있습니다.

cd .. 명령은 현재 작업 중인 디렉토리의 바로 위 디렉토리로 즉시 이동하라고 지시합니다. 두 단계 위 디렉토리로 이동하기 위해서는 cd ../.. 명령을 사용하시면 됩니다.

다음의 예제를 이용하여 지금까지 배워본 절대 경로와 상대 경로에 대해 잘 알고 있는지 시험해 보시기 바랍니다. 여러분의 홈 디렉토리에서, 다음의 상대 경로를 입력하십시오:

cd ../../etc/X11

위 예시 명령을 입력하시면, 여러분은 X 윈도우 시스템 관련 설정 파일과 디렉토리가 포함된 X11 디렉토리로 이동합니다.

방금 입력하신 cd 명령을 자세히 살펴보도록 하겠습니다. 여러분은 시스템에게 다음과 같이 지시 하였습니다:

  1. 로그인 디렉토리의 상위 디렉토리로, 한 단계 위로 이동하시오. (/home이 될 것입니다)

  2. 그 후 그 디렉토리의 상위 디렉토리로, 위로 한 단계 이동하시오. (루트 / 디렉토리 입니다)

  3. 그런 다음 etc 디렉토리로 내려가시오.

  4. 마지막으로, X11 디렉토리로 이동하시오.

이와는 반대로 절대 경로명을 사용하여 보다 빠르게 /etc/X11 디렉토리로 이동할 수 있습니다. 예를 들면:

cd /etc/X11

절대 경로명은 루트 디렉토리 (/)에서 시작하여 지정하신 디렉토리로 이동해 갑니다.

참고알림
 

상대 경로명을 사용하여 원하는 디렉토리나 파일로 이동하기 전에 언제나 자신이 위치하고 있는 디렉토리가 무엇인지 알고 있어야 합니다. 하지만 절대 경로명을 이용하여 다른 디렉토리나 파일로 이동할 때는 파일 시스템 어디에 위치하고 있는지 걱정하지 않으셔도 됩니다. 어느 디렉토리에 위치하고 있는지 확실하지 않다면, pwd를 입력해 주십시오. 여러분의 현재 작업 중인 디렉토리가 표시될 것입니다. 이 디렉토리명을 참고하여 상대 경로명을 사용하여 상위 디렉토리나 하위 디렉토리로 이동하실 수 있습니다.

명령어기능
cd로그인 디렉토리로 돌아갑니다
cd ~이 명령어를 사용해도 로그인 디렉토리로 돌아갑니다
cd /전체 시스템의 루트 디렉토리로 이동합니다
cd /root설치 과정에서 만드신 루트 (수퍼유저) 사용자의 홈 디렉토리로 이동합니다; 루트 사용자로 로그인 하셔야 이 디렉토리로 이동하실 수 있습니다.
cd /home사용자의 로그인 디렉토리가 저장되어 있는 홈 디렉토리로 이동합니다
cd ..한 단계 위에 있는 디렉토리로 이동합니다
cd ~다른 사용자(otheruser)만일 다른 사용자로 부터 허가를 받았다면, 다른 사용자의 로그인 디렉토리로 이동합니다
cd /dir1/subdirfoo현재 여러분이 어느 디렉토리에 위치 하는지 상관없이, 이 절대 경로는 dir1의 하부 디렉토리인 subdirfoo로 바로 이동시켜 줍니다
cd ../../dir3/dir2이 상대 경로를 사용하시면, 두 단계 위로 이동한 후, dir3 디렉토리로 이동한 다음, dir2 디렉토리로 이동합니다.

표 13-1. cd 옵션

이제 디렉토리 바꾸는 방법에 대해 이해하기 시작하셨을 겁니다, 이제 루트의 로그인 디렉토리 (수퍼유저 계정)로 변경했을 경우 어떤 일이 발생하는지 알아보겠습니다. (수퍼유저 계정) 다음을 입력합니다:

cd /root

루트로 로그인하지 않으셨다면, 그 디렉토리로 접근할 수 있는 허가가 거절 (denied permission)될 것입니다.

허가가 없는 사용자가 루트 계정이나 다른 사용자의 계정 (또는 로그인 디렉토리)로 접근하는 것을 거부함으로서 사고로 또는 고의로 시스템이 변경되는 것을 방지할 수 있습니다. 13.14 절을 참조하시기 바랍니다.

루트 로그인이나 루트 디렉토리로 이동하기 위해서는, su 명령을 사용합니다.

su

작은보힌트
 

su 명령은 사용자를 대신하는 것을 의미하며 이 명령을 이용하여 일시적으로 다른 사용자로 로그인할 수 있습니다. su 명령만 입력한 후 [Enter] 키를 누르시면, 여전히 여러분의 로그인 쉘 (여러분의 사용자 홈 디렉토리) 안에 있으면서 (수퍼유저라고도 불리우는) 루트가 될 수 있습니다. su - 명령을 입력하시면 루트 로그인 쉘 안에서 루트 사용자가 될 수 있습니다 — 즉, 여러분이 처음부터 루트로 로그인한 것과 같게 됩니다.

루트 암호를 입력하는 즉시, 명령어 프롬프트에서 새로운 수퍼유저 상태로 변화된 것을 볼 수 있습니다. (이전 예시에서 볼 수 있는 것과 같이) 루트 계정은 프롬프트 앞쪽에 표시되어 있고 끝은 "#" 로 표시됩니다.

루트에서 작업을 마치면, 프롬프트에서 exit 명령을 입력하여 여러분의 사용자 계정으로 되돌아갈 수 있습니다.