cd 사용시 / 사용 cd주위에 있을

내 Mac의 홈 디렉토리에 있습니다.

$ pwd
/Users/lukas

내가 cd주위에 있을 때 , 나는 경로를 /다음 과 같이 시작하지 못한다 (그리고 시작할 수 없다) .

$ cd Documents/
/Users/lukas/Documents

$ cd /Documents
-bash: cd: /Documents: No such file or directory

내가있는 경우를 제외하고 /:

$ pwd
/
$ cd Users
/Users

$ cd /Users
/Users

왜 사용할 수 있습니다 /에서 갈 때 경로의 앞 //Users하지만 후속 수준? 이것은 macOS에만 해당됩니까, 아니면 표준 Unix 동작입니까?



답변

이것은 표준 유닉스 행동입니다.

/경로의 시작 부분에 디스크 (또는 파일 시스템 트리의 시작 / 최상층)의 루트를 나타냅니다. 으로 Documents루트 떨어져 아니라, /Documents찾을 수 없습니다.

/Users 루트 디렉토리에서 떨어져 있으므로이 문제가 발생하지 않습니다.

cd /Users/lukas/Documents해당 경로로 변경할 수 있습니다 .

또는 상대 주소를 사용할 수 있습니다. 유닉스 기반 파일 시스템에는 2 개의 특수 디렉토리가 있습니다 :

  • . “이 디렉토리”를 의미합니다.
  • .. 이것은 부모 디렉토리를 의미합니다.

당신이 경우 /Users/lukas, cd ./Documents올바른 위치에 당신을 데려 갈 것이다.

하자 당신이에 있던 가정 /Users/Lukas/Documents하고 가고 싶어 /Users/Janes/Documents, 당신이 명령을 실행할 수있는 cd ../../Janes/Documents사용 – ..당신은 두 번 할 것, 그래서 새로운 상대 경로로 가기 전에 – 당신이 수준을 다시 걸릴 것이다.


답변

/Users/lukas“절대”경로입니다. 행간 /은 파일 시스템의 루트 디렉토리를 나타냅니다.

lukas“상대적”경로입니다. 루트에 고정되어 있지 않으므로 ” 현재 디렉토리 에서 이것을 찾으십시오”를 의미 합니다. 현재 디렉토리가 /Users없거나 (또는 디렉토리가 있는 다른 디렉토리) 그렇지 lukas않으면 실패합니다.

따라서 다음과 같은 가정하에 예제를 살펴 보겠습니다 /Users/lukas.

$ cd Documents/
/Users/lukas/Documents

주어진 상대 경로 => 안에있는 “Documents”디렉토리로 변경하십시오 /Users/lukas.

$ cd /Documents
-bash: cd: /Documents: No such file or directory

주어진 절대 경로 == 디렉토리로 변경 /Documents.

$ pwd
/

이것은 작업 디렉토리를 루트 디렉토리로 변경했음을 보여줍니다 /( cd이를 수행 하는 명령은 표시되지 않았습니다).

$ cd Users
/Users

주어진 상대 경로 => 안에있는 “Users”디렉토리로 변경하십시오 /.

$ cd /Users
/Users

주어진 절대 경로 == 디렉토리로 변경 /Users.

매번 열쇠는 그 선두 /입니다. 그것으로 경로는 절대적입니다. 그것이 없으면 경로는 상대적입니다. 이 규칙은 모든 절대 경로가로 시작하기 때문에 명확 /합니다 (루트 디렉토리는 항상이므로 /).

해당 알고리즘을 느슨하게 설명하는 의사 코드는 다음과 같습니다.

MakePathAbsolute(path):
   if <path> starts with '/'
      return <path>
   else
      return <current directory>/<path>

전달한 인수 cd는이 알고리즘 을 거 칩니다. 변경하려는 디렉토리는 알고리즘이 반환하는 경로입니다.


더 읽을 거리 :


답변