내 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
는이 알고리즘 을 거 칩니다. 변경하려는 디렉토리는 알고리즘이 반환하는 경로입니다.
더 읽을 거리 :
- 유닉스 파일 및 디렉토리 자습서
Joseph L. Zachary
“과학 프로그래밍 소개”