본문 바로가기
리눅스

dirname

by 다움위키 2023. 12. 19.

dirname유닉스유닉스-계열 운영 시스템의 표준 컴퓨터 프로그램입니다. dirname이 경로이름에 주어질 때, 그것은 마지막 슬래시 ('/') 문자로 시작하는 임의의 접미사를 삭제하고 결과를 반환할 것입니다. dirname은 단일 유닉스 사양에 설명되어 있고 주로 쉘 스크립트에서 사용됩니다.

History

GNU coreutils에 번들된 dirname 버전은 David MacKenzie와 Jim Meyering에 의해 작성되었습니다.

dirname 명령은 IBM i 운영 시스템에도 이식되었습니다.

Usage

dirname에 대해 단일 유닉스 사용은 다음입니다:

dirname string

string 경로이름

Examples

dirname은 후행 슬래시를 무시하는 경로이름에서 디렉토리-경로 이름을 검색할 것입니다:

$ dirname /home/martin/docs/base.wiki
/home/martin/docs

$ dirname /home/martin/docs/.
/home/martin/docs

$ dirname /home/martin/docs/
/home/martin

$ dirname base.wiki
.

$ dirname /
/

Performance

dirname은 오직 하나의 피연산자를 허용하므로, 쉘 스크립트의 내부 루프 내에서 사용법은 성능이 저하될 수 있습니다. 다음을 생각해 보십시오:

 while read file; do
     dirname "$file"
 done < some-input

위의 발췌문은 입력의 각 줄에 대해 별도의 프로세스 호출을 발생시킵니다. 이러한 이유로, 쉘 대체가 전형적으로 대신 사용됩니다:

 echo "${file%/*}";

또는 만약 상대 경로이름이 마찬가지로 처리되어야 하면

 if [ -n "${file##*/*}" ]; then
     echo "."
 else
     echo "${file%/*}";
 fi

이들은 dirname과 다르게 후행 슬래시를 처리함을 주목하십시오.

Misconceptions

우리가 후행 슬래시로 끝나는 경로가 디렉토리라고 생각할 수 있습니다. 그러나 실제로, 후행 슬래시는 디렉토리 내의 모든 파일을 나타냅니다.

/home/martin/docs/.

경로를 디렉토리로 나타내는 올바른 방법은 후행 슬래시와 마침표를 사용하는 것입니다.

External links