본문 바로가기
개발 도구/유닉스 커맨드

절대 경로 vs 상대 경로

by ♥︎해이나♥︎ 2023. 5. 9.
반응형

오늘은 절대 경로와 상대 경로의 개념에 대해서 설명하려고 한다. 이미 다른 포스팅에서도 한 번 다룬 기억이 있는 것 같지만, 유닉스 커맨드를 공부할때도 유용하게 사용되는 개념이다. 경로를 argument로 받는 모든 커맨드에 절대 경로, 상대 경로를 둘 다 사용할 수 있기 때문이다.

 

절대경로 상대경로

 

절대 경로

절대 경로란, 루트 디렉토리를 기준으로 어떤 파일이나 디렉토리의 고유한 경로를 표시하는 것을 말한다. 경로가 길어질수록 불편해지는 단점이 있다.

ex) home/heina/documents/study/codeit/20230509

 

상대 경로

상대 경로란, 현재 자신이 위치해 있는 디렉토리 기준으로 경로를 나타내는 것을 말한다. 현재 디렉토리는 . 으로 표시하며, 상위 디렉토리는 .. 으로 표시한다.

ex) ../codeit/20230509

 


 

절대 경로와 상대 경로의 이해를 돕기 위해 예제를 하나 만들어보자면 아래와 같다.

 

- 상태 : 현재 working directory는 codeit 이라는 폴더임

- 목표 : codeit 폴더 안의 20230509 폴더로 이동하고 싶음

 

▼▼▼

 

- 절대 경로로 이동하는 경우

cd home/heina/documents/study/codeit/20230509

- 상대 경로로 이동하는 경우(working directory 까지는 . 으로 표시 가능)

cd ./20230509

 

그렇다면 현재 위치보다 하위에 있는 디렉토리가 아닌, 상위 디렉토리로 이동하고 싶다면... 상대 경로는 어떻게 표시할 수 있을까? 

 

- 상태 : 현재 working directory는 20230509라는 폴더임

- 목표 : documents 안의 work/company 폴더로 이동하고 싶음 

 

▼▼▼

 

- 절대 경로로 이동하는 경우

cd home/heina/documents/work/company

- 상대 경로로 이동하는 경우(..를 쓸 때마다 상위 폴더 한 칸씩 올라간다고 생각하면 됨)

cd ../../../work/company

 

첫번째 .. 으로 codeit 폴더, 두번째 .. 으로 study 폴더, 세번째 .. 으로 documents 폴더까지 이동한 후, documents 폴더 안에 있는 /work/company 디렉토리 경로를 순서대로 적어준 것이다. 처음에는 이 개념이 헷갈릴수도 있지만 익숙해지면 경로를 훨씬 짧고 간결하게 표현할 수 있다.

 

상대경로 예제

 

위의 이미지는 Figma_1 폴더 안의 iPhone 으로 이동했다가 다시 상대 경로를 이용해서 iPad 로 이동한 예제이다.

다만, 상대 경로는 현재 디렉토리 안에 있는 위치로 파고들어가거나, 현재 디렉토리와 가까운 위치로 이동할 때는 유용하지만, 멀리 떨어져 있는 위치로 이동할 때는 절대경로가 더 쉽고 직관적일 수 있다. 여러 번 상위 디렉토리로 이동해야 하는 경우에는 상대 경로보다 절대 경로를 사용하는 것을 추천한다.

 

공백이 있는 파일/디렉토리로 이동하는 방법

그런데 테스트를 하다가 오류처럼 보이는 것을 발견했다. iPhone에서 iPad로는 잘 이동하는데, 공백이 있는 iPad Air로는 이동이 되지 않는 것이다.

 

이게 왜 말을 안 듣지?

 

그래서 이건 어떻게 해결해야 하나 생각하고 있었는데, 다행히도 코드잇의 이어지는 커리큘럼에서 친절하게 설명해주고 있었다. 커맨드에 띄어쓰기를 사용하면 한 개의 파일, 디렉토리가 아닌 두 개의 argument로 인식한다고 한다. 그래서 이름에 공백이 들어가는 경우에는 특수문자인 작은 따옴표(''), 큰 따옴표(""), 역슬래시(\)를 사용한다. 한국어 키보드라서 역슬래시가 없는 경우에는 대신 ₩를 사용할 수 있다.

 

공백이 있는 파일, 디렉토리로 이동

 

위 세가지 방법 중에서 어떤 것을 사용해도 같은 결과를 얻을 수 있다.

cf. 파일이나 디렉토리 이름을 생성할 때 되도록이면 공백을 사용하지 말고 _ 등으로 처리하자.

반응형

댓글