dirname — 경로에서 디렉토리 부분 추출
Linux / 파일 및 디스크 관리 / dirname.html
경로 문자열에서 마지막 요소를 제거한 디렉토리 경로를 출력합니다.
기본 정보
| 명령어 이름 | dirname |
|---|---|
| 한 줄 소개 | 경로 문자열에서 마지막 요소를 제거한 디렉토리 경로를 출력합니다. |
| 제공 | GNU coreutils (모든 Linux 배포판 기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/dirname.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 파일·디스크 관리 (태그: 경로, 문자열, 스크립트) |
이 명령어는 무엇인가?
dirname은 경로 문자열을 조작해 마지막 요소를 떼어 냅니다. 파일이 실제로 존재하는지 확인하지 않고 순수하게 문자열만 처리합니다.
스크립트에서 자신의 위치를 기준으로 다른 파일을 찾을 때 basename과 함께 자주 사용합니다.
어떤 문제를 해결하는가?
- 스크립트에서 실행 위치를 기준으로 경로를 만들 때
- 파일 경로에서 상위 디렉토리만 필요할 때
- 경로를 조각내어 다른 명령에 넘길 때
- 심볼릭 링크 없이 순수 문자열 처리가 필요할 때
주요 기능
경로 분리
마지막 요소를 제거한 경로를 출력합니다.
- 활용 상황: 설정 파일 경로에서 디렉토리를 얻을 때
- 얻는 결과: 상위 디렉토리 문자열
- 제한 사항: 실제 디렉토리 존재 여부는 확인하지 않습니다.
스크립트 자기 위치 찾기
$0와 조합해 스크립트 디렉토리를 구합니다.
- 활용 상황: 스크립트가 참조 파일을 찾을 때
- 얻는 결과: 스크립트 기준 경로
- 제한 사항: 심볼릭 링크로 실행하면 링크 위치가 나옵니다.
여러 인자 처리
인자를 여러 개 주면 각각 한 줄씩 출력합니다.
- 활용 상황: 여러 경로를 일괄 처리할 때
- 얻는 결과: 경로별 결과
- 제한 사항: 결과 순서는 입력 순서를 따릅니다.
설치 및 실행
설치 여부 확인
dirname --version
sudo apt install coreutils # Debian/Ubuntu sudo dnf install coreutils # Fedora
실제 사용 예제
경로 분리
파일 경로의 디렉토리 부분만 얻습니다.
dirname /var/log/nginx/access.log
스크립트 디렉토리
스크립트가 있는 디렉토리로 이동합니다.
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
cd "$SCRIPT_DIR"
여러 경로
두 경로를 각각 처리합니다.
dirname /etc/hosts /var/log/syslog