개발 도구 ·
파일 경로를 집 주소처럼 읽고 터미널에서 길을 잃지 않는 법
먼저 답부터
파일은 내용을 담은 문서이고 폴더는 파일을 묶는 공간입니다. 절대경로는 출발점부터 적은 전체 주소, 상대경로는 현재 폴더를 기준으로 적은 길 안내입니다. 터미널에서는 먼저 `pwd`로 현재 위치를 확인한 뒤 `ls`로 목록만 읽으면 엉뚱한 곳을 바꾸는 실수를 줄일 수 있습니다.
바이브코딩을 시작하면 AI가 자주 "프로젝트 폴더에서 명령을 실행하세요"라고 말합니다. 폴더를 눈으로 여는 데는 익숙해도 터미널의 검은 화면에서 내가 어디에 있는지는 바로 보이지 않습니다. 이때 파일 구조를 모르고 명령부터 붙여 넣으면 다른 프로젝트를 고치거나 필요한 파일을 찾지 못할 수 있습니다.
파일과 경로는 어려운 개발 지식보다 컴퓨터 안의 주소 체계에 가깝습니다. 집 주소를 읽듯 출발점, 중간 폴더, 마지막 파일을 차례로 보면 됩니다. 오늘은 내용을 바꾸지 않는 확인 명령만 사용해 이 주소를 읽는 연습을 합니다.
파일은 문서이고 폴더는 서랍이다
파일은 글, 사진, 코드처럼 실제 내용을 저장한 한 단위입니다. index.html은 웹페이지 구조를 담은 파일이고 logo.png는 그림을 담은 파일입니다. 폴더는 여러 파일과 다른 폴더를 묶어 두는 서랍입니다. 같은 이름의 파일도 서로 다른 폴더에 있으면 별개의 파일입니다.
확장자는 파일 이름 끝의 .html, .css, .png 같은 부분입니다. 파일이 어떤 형식인지 알려 주는 표지이지만, 이름만 바꾼다고 실제 내용의 형식까지 바뀌는 것은 아닙니다. photo.png를 photo.jpg로 이름만 바꿔도 이미지 변환이 되지 않는 것과 같습니다.
- 파일 이름과 확장자를 함께 확인합니다.
- 같은 이름이 보이면 어느 폴더 안에 있는지까지 봅니다.
- 프로젝트의 시작 파일을 임의로 옮기지 않습니다.
- 숨김 파일은 설정을 담을 수 있으므로 모르면 수정하지 않습니다.
- 복사본을 만들 때는 원본 위치를 먼저 기록합니다.
절대경로는 나라부터 적은 전체 주소다
경로는 파일이나 폴더가 있는 위치를 글자로 나타낸 주소입니다. 절대경로는 컴퓨터의 기준점부터 목적지까지 모두 적은 주소입니다. macOS와 Linux에서는 보통 /로 시작하고, Windows에서는 C:\\ 같은 드라이브 문자로 시작할 수 있습니다.
예를 들어 /Users/mina/projects/todo/index.html은 /Users에서 시작해 mina, projects, todo 폴더를 거쳐 index.html 파일에 도착한다는 뜻입니다. 택배 주소에 나라와 도시, 도로명, 건물 번호를 모두 쓰는 것과 비슷합니다. 출발 위치가 달라도 같은 목적지를 가리키는 장점이 있습니다.
Node.js의 path.isAbsolute()는 문자열이 절대경로인지 확인하고, path.resolve()는 현재 작업 폴더를 기준으로 여러 조각을 합쳐 절대경로를 만듭니다. 다만 경로를 계산한다고 파일이 실제로 존재한다는 뜻은 아닙니다. 주소 형식과 실제 건물 존재 여부가 다른 문제인 셈입니다.
상대경로는 지금 서 있는 곳에서 출발한다
상대경로는 현재 작업 폴더를 기준으로 목적지를 적습니다. ./images/logo.svg에서 .은 현재 폴더를 뜻합니다. ../shared/colors.css에서 ..은 한 단계 위 폴더를 뜻합니다. "현관에서 오른쪽 방"이라는 안내는 어느 집에 서 있는지 알아야 의미가 생기는 것과 같습니다.
현재 위치가 /Users/mina/projects/todo라면 다음 안내를 이렇게 읽을 수 있습니다.
./src/main.ts 현재 폴더 아래 src의 main.ts
../shared/theme.css 한 단계 위로 간 뒤 shared의 theme.css
/tmp/report.txt 현재 위치와 무관한 절대경로
상대경로 오류가 날 때는 철자만 고치지 말고 명령이 시작된 현재 위치를 함께 확인해야 합니다. AI에게 질문할 때도 "파일이 없어요"보다 현재 위치와 입력한 상대경로를 같이 보여 주면 원인을 더 정확히 좁힐 수 있습니다.
터미널에서는 현재 위치부터 읽는다
터미널은 글자로 컴퓨터에 명령을 전달하고 결과를 읽는 프로그램입니다. 현재 작업 디렉터리는 터미널이 지금 기준으로 삼는 폴더입니다. GNU 문서에서 pwd는 현재 디렉터리 이름을 출력하고, ls는 지정한 파일이나 폴더 정보를 나열합니다.
처음에는 아래처럼 읽기만 하는 두 명령으로 충분합니다.
pwd
ls
pwd 결과가 예상한 프로젝트 폴더인지 먼저 봅니다. 그다음 ls 결과에서 package.json, src, public처럼 안내받은 항목이 보이는지 확인합니다. 항목이 보이지 않으면 명령이 틀렸다고 단정하지 말고 다른 폴더에 서 있을 가능성부터 봅니다.
경로 오류는 세 줄로 좁힐 수 있다
"No such file or directory"는 요청한 위치에서 파일이나 폴더를 찾지 못했다는 뜻입니다. 파일이 반드시 삭제됐다는 뜻은 아닙니다. 현재 위치가 다르거나, 대소문자와 띄어쓰기가 다르거나, 상대경로의 .. 개수가 틀릴 수 있습니다.
오류를 만났다면 현재 위치, 현재 목록, 요청한 경로를 순서대로 적습니다. 경로에 공백이 있으면 터미널이 단어를 여러 인자로 나눌 수 있으므로 따옴표 사용법을 확인해야 합니다. 운영체제마다 경로 구분 기호와 대소문자 처리도 다를 수 있어 다른 사람의 화면을 그대로 추측해서는 안 됩니다.
오늘 바로 해볼 작은 실습
- 터미널을 열고
pwd를 입력해 현재 위치를 한 줄로 확인합니다. ls를 입력해 보이는 파일과 폴더 중 세 개를 적습니다.- 파일 탐색기에서 같은 폴더를 열어 터미널 목록과 비교합니다.
- 현재 위치를 기준으로 파일 하나의 상대경로를 종이에 적습니다.
- 같은 파일의 절대경로를 파일 정보 화면에서 확인합니다.
- 두 경로가 같은 파일을 가리키는지 폴더 이름을 차례로 대조합니다.
오늘은 rm, mv, sudo처럼 삭제·이동·관리자 권한을 동반할 수 있는 명령을 실행하지 않습니다. 뜻을 모르는 명령, 인터넷에서 복사한 긴 명령, 비밀키가 포함된 명령은 입력 전에 멈추세요. 현재 위치와 영향을 받을 파일을 설명할 수 없으면 실행하지 않는 것이 가장 안전한 기준입니다.
확인한 자료
- Path — Node.js
- pwd invocation — GNU Coreutils
- ls invocation — GNU Coreutils