답변:
dirname
basename
경로 구성 요소를 추출하기 위해 찾고있는 도구는 다음 과 같습니다.
$ VAR=/home/me/mydir/file.c
$ DIR=$(dirname "${VAR}")
$ echo "${DIR}"
/home/me/mydir
$ basename "${VAR}"
file.c
그들은하지 않은 내부 배쉬 명령을하지만 그들은 POSIX 표준의있는 거 부분 (참조 dirname
, basename
배쉬를 실행할 시스템의 대부분에 사용할 수 있어야하므로)합니다.
$ export VAR=/home/me/mydir/file.c
$ export DIR=${VAR%/*}
$ echo "${DIR}"
/home/me/mydir
$ echo "${VAR##*/}"
file.c
와 의존성을 피하기 위해 basename
및dirname
관련 메모에서 파일 이름이나 상대 경로 만있는 경우 dirname
자체적으로 도움이되지 않습니다. 나를 위해, 대답은 끝났다 readlink
.
fname='txtfile'
echo $(dirname "$fname") # output: .
echo $(readlink -f "$fname") # output: /home/me/work/txtfile
그런 다음 둘을 결합하여 디렉토리 만 얻을 수 있습니다.
echo $(dirname $(readlink -f "$fname")) # output: /home/me/work
readlink -m "$fname"
주어진 이름을 재귀 적으로 정식화 하는 데 사용해야 합니다.