cd 사용시 / 사용


12

내 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 동작입니까?


11
나는 상대 및 절대 경로에 대한 질문이 한 생각 물었다 befofre
adamczi

6
@adamczi OP는 상대 경로가 무엇인지 또는 구문이 어떻게되는지 알지 못하므로 찾을 수 없습니다.
Monica Monica 복원

12
@ K.Gkinis 중복으로 닫히지 않는 이유는 아닙니다. 요청자가 올바른 답변을 얻는 데 도움이되고 (답변이 좋다고 가정) 응답자는 동일한 내용의 더 적은 버전을 유지 관리 할 수 ​​있습니다.
user202729

9
@ K.Gkinis 그리고 어떤 의미에서, 그것은 복제본으로서의 종결 점의 큰 부분입니다 : 사람들은 많은 다른 방법으로 질문을 할 것이므로, 단일 답변을 가리키는 많은 질문 (그러한 방법과 일치)은 좋은 것. 이와 같은 경우 (OP가 검색 할 용어를 모르는 경우) 중복 제거는 비판이 아니라 사람들이 질문하는 여러 가지 방법을 처리하는 가장 좋은 방법입니다.
TripeHound

1
@adamczi 그들은 (링크에 대한 감사합니다!)하기 전에 물어하지만 내 질문 여기에 주어진 특히 큰 응답은 한 방법 자세한하고 링크 된 답변보다 더 개념을 설명한다. 그것이 중복으로 마감하는 것이 중요한지 모르지만 고려해야 할 수도 있습니다.
LukasKawerau

답변:


45

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

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

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

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

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

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

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

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


1
참고 : @davidgo 말했듯이, 경우에 Users/lukas, cd Documents에 대한 통화 상대 경로 ; cd /Users/Lukas/Documents에 대한 호출 절대 경로 (을 레퍼토리 어떤 일하게 될 것이라고이 명령을 호출 할 때에있다).
Shan-x

1
유닉스 시스템 인 맥에 관한 질문이지만, DOS /가 유닉스에서 오랫동안 길고 복잡한 역사를 통해 빌린 이후 표준 MS-DOS / Windows 동작 ( `\`로 대체)이기도하다 .
FreeMan

2
또한 사용하는 쉘에 따라 cd $ HOME / Documents 또는 cd ~ / Documents도 작동합니다. 쉘 변수 HOME ($ HOME으로 액세스)은 홈 디렉토리의 일반적인 저장 위치입니다 (~ $ HOME의 특수 별명 임).
pboss3010

13

/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는이 알고리즘 을 거 칩니다. 변경하려는 디렉토리는 알고리즘이 반환하는 경로입니다.


더 읽을 거리 :


이것은 또한 훌륭한 연습이며 실제로이 동작을 이해하는 데 도움이됩니다. 감사합니다! :)
LukasKawerau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.