Linux 강좌 / 현재 위치 확인하고 이동하기 - pwd, ls, cd, tree

리눅스에서 디렉터리를 탐색할 때는 pwd로 현재 위치를 확인하고, ls로 내용을 본 다음, cd로 이동합니다. 하위 구조를 한눈에 보고 싶다면 tree를 사용할 수 있습니다. 이 강좌에서는 네 명령어를 이어 사용하면서 절대 경로와 상대 경로가 실제 이동에 어떻게 적용되는지 익힙니다.

먼저 현재 작업 디렉터리 확인하기

터미널에서 입력하는 상대 경로는 현재 작업 디렉터리를 기준으로 해석됩니다. 프롬프트에 경로가 표시되더라도 축약되거나 사용자 설정에 따라 달라질 수 있으므로, 정확한 위치를 알고 싶다면 pwd를 입력하세요.

pwd

예를 들어 계정 이름이 learner이고 홈 디렉터리에 있다면 다음과 비슷하게 출력됩니다. 실제 경로는 계정 설정에 따라 다릅니다.

/home/learner

pwd는 현재 위치를 바꾸지 않습니다. 심볼릭 링크를 거쳐 들어온 디렉터리에서는 논리 경로와 실제 경로가 다를 수 있습니다. Bash에서 물리적으로 해석한 경로를 보고 싶다면 pwd -P를 사용합니다.

디렉터리 내용 살펴보기

ls는 파일과 디렉터리의 이름을 보여 줍니다. 인수를 생략하면 현재 디렉터리를, 경로를 지정하면 해당 위치를 확인합니다. 아래 명령은 각각 현재 위치와 /etc의 목록을 요청합니다.

ls
ls /etc

예를 들어 ls /etc 결과에는 다음과 같은 이름이 나타날 수 있습니다. 아래는 설명을 위해 일부 항목만 적은 예시이며, 실제 목록과 출력 배치는 시스템마다 다릅니다.

hosts  passwd  ssh

실제 출력은 설치된 프로그램과 시스템 설정에 따라 달라집니다. 이름이 점(.)으로 시작하는 항목은 기본 목록에서 보이지 않는 경우가 많으므로, 숨김 항목까지 보려면 -a를 붙이세요. 권한·소유자·크기·수정 시각 등도 보려면 -l을 사용합니다.

ls -a
ls -l /etc

ls -l의 첫 글자는 파일 종류를 나타냅니다. d는 디렉터리, -는 일반 파일, l은 심볼릭 링크의 대표적인 예입니다. 자세한 정보의 읽는 법은 파일 종류와 정보 강좌에서 다룹니다. 이름만으로 대상이 디렉터리인지 확실하지 않다면 ls -ld 대상으로 대상 자체의 정보를 확인할 수 있습니다.

절대 경로와 상대 경로로 이동하기

cd는 현재 셸의 작업 디렉터리를 바꿉니다. 예를 들어 아래처럼 절대 경로를 지정하면 어디서 실행하든 /etc로 이동합니다. 바로 다음에 pwd를 실행해 결과를 확인하세요.

cd /etc
pwd

이 경우 pwd의 출력은 보통 다음과 같습니다.

/etc

현재 위치가 /etc일 때 cd ..는 상위 디렉터리인 /로 이동합니다. cd -는 직전에 있던 디렉터리로 돌아가며, Bash에서는 돌아간 경로를 출력합니다. 두 명령은 같은 셸에서 순서대로 실행해야 아래 설명과 맞습니다.

cd ..
pwd
cd -
pwd

위 순서에서 첫 pwd는 /, cd -와 마지막 pwd는 /etc를 보여 줍니다. 다른 명령으로 이동했다면 cd -의 결과도 달라집니다.

인수 없이 cd를 실행하면 홈 디렉터리로 이동합니다. cd ~도 현재 사용자의 홈 디렉터리로 이동하는 일반적인 Bash 표기입니다. 홈 디렉터리가 반드시 /home/사용자명인 것은 아니므로 이동 후에는 pwd로 확인하세요.

cd
pwd

하위 디렉터리 구조 보기

tree는 파일과 디렉터리의 계층을 들여쓰기로 표시합니다. ls가 한 단계의 목록을 확인하는 데 적합하다면, tree는 하위 구조를 파악할 때 유용합니다. 디렉터리가 큰 곳에서 전체 트리를 펼치면 출력이 길어질 수 있으므로 처음에는 깊이를 제한하세요.

tree -d -L 1 /etc

출력의 왼쪽 들여쓰기와 가지 표시를 따라가면 어느 디렉터리가 /etc 아래에 있는지 알 수 있습니다. 다음은 구조를 보여 주기 위한 축약 예시입니다. 실제 디렉터리 이름과 개수는 다릅니다.

/etc
├── ssh
└── systemd

-d는 디렉터리만 표시하고 -L 1은 표시 깊이를 한 단계로 제한합니다. 시스템에 tree가 없다면 command not found가 나올 수 있습니다. 그럴 때는 우선 ls로 살펴보고, 필요하다면 사용 중인 배포판의 패키지 관리 방법에 따라 tree를 설치하세요. 이 강좌의 나머지 실습에는 tree가 없어도 됩니다.

경로 탐색 실습

다음 순서대로 실행하면서 매번 현재 위치와 명령의 대상을 예상해 보세요. /etc의 실제 파일 목록은 컴퓨터마다 달라도 괜찮습니다. 실습은 파일을 만들거나 수정하지 않습니다.

  1. pwd로 출발 위치를 확인합니다.
  2. cd /etc로 이동한 뒤 pwd와 ls로 위치와 내용을 확인합니다.
  3. cd ..로 상위 디렉터리에 가서 pwd로 /인지 확인합니다.
  4. cd -로 직전의 /etc에 돌아가고, 마지막으로 cd로 홈 디렉터리에 돌아갑니다.

cd: ...: No such file or directory가 나오면 경로의 철자와 대소문자를 확인하세요. Permission denied는 해당 경로에 들어갈 권한이 없다는 뜻일 수 있습니다. 현재 위치가 헷갈리면 추측하지 말고 pwd부터 다시 실행하세요.

각 명령의 옵션과 예외를 더 자세히 알고 싶다면 pwd로 현재 경로 확인하기, ls로 목록 확인하기, cd로 디렉터리 이동하기, tree로 구조 보기를 참고하세요.

공식 문서

cd와 Bash의 pwd는 GNU Bash 내장 명령 문서, ls는 GNU Coreutils의 ls 문서, tree 옵션은 tree(1) 매뉴얼에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / realpath - 절대 경로와 실제 경로 확인

Linux / 명령어 / realpath - 절대 경로와 실제 경로 확인

Linux realpath 명령어로 상대 경로와 심볼릭 링크를 정규화하고 절대·상대 경로를 출력하는 방법을 설명합니다. 경로 존재 조건과 보안상 주의점도 함께 정리합니다.

Linux / 명령어 / tracepath - 네트워크 경로와 경로 MTU 확인

Linux / 명령어 / tracepath - 네트워크 경로와 경로 MTU 확인

Linux tracepath 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / pkill - 이름으로 프로세스에 시그널 보내기

Linux / 명령어 / pkill - 이름으로 프로세스에 시그널 보내기

Linux pkill 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux comm 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / mkdir - 디렉터리 생성

Linux / 명령어 / mkdir - 디렉터리 생성

Linux mkdir 명령어로 디렉터리와 여러 단계의 상위 디렉터리를 만드는 방법을 설명합니다. 권한, umask, SELinux 환경과 자동화에서 안전하게 사용하는 방법도 정리합니다.

Linux / 리눅스 역사 - 1991년 취미 프로젝트가 세계 인프라가 되기까지

Linux / 리눅스 역사 - 1991년 취미 프로젝트가 세계 인프라가 되기까지

리눅스는 1991년 시작된 커널 프로젝트에서 서버·클라우드·모바일을 떠받치는 기반 기술로 성장했습니다. UNIX와 GNU의 배경부터 배포판과 공동 개발 생태계의 확장까지 핵심 연표로 정리합니다.

Linux / 명령어 / more - 텍스트를 화면 단위로 나누어 보기

Linux / 명령어 / more - 텍스트를 화면 단위로 나누어 보기

Linux more 명령어로 긴 텍스트를 화면 단위로 읽는 방법을 설명합니다. 이동과 검색 키, 파이프 사용법, less와의 차이를 함께 정리합니다.

Linux / 명령어 / groups - 사용자의 그룹 소속 확인

Linux / 명령어 / groups - 사용자의 그룹 소속 확인

Linux groups 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / unalias - 명령어 별칭 삭제

Linux / 명령어 / unalias - 명령어 별칭 삭제

Bash unalias 명령어로 특정 별칭이나 모든 별칭을 제거하는 방법을 설명합니다. 일시 제거와 영구 제거, 별칭 우회 및 함수·변수 삭제와의 차이를 정리합니다.

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux free 명령어의 total, used, free, buff/cache, available과 Swap 항목을 설명합니다. 메모리 부족을 판단할 때 함께 확인할 지표와 주의점도 정리합니다.