주어진 파일의 상위 디렉토리를 가져옵니다.

주어진 파일의 상위 디렉토리를 가져옵니다.

filedir이 아닌 파일의 경로 이름이 저장되어 있다고 가정합니다 .

상위 디렉토리를 얻는 방법은 무엇입니까?

/..값을 추가하면 다음이 작동하지 않는 이유

$ cd $file/..   
cd: ./Tools/build.bat/..: No such file or directory

감사해요.

답변1

가설

$ file=./Tools/build.bat

그리고POSIX 호환 쉘(zsh 포함):

$ echo "${file%/*}"
./Tools

그리고dirname:

$ echo "$(dirname -- "$file")"
./Tools

(적어도 GNU는 dirname옵션을 허용하므로 --경로가 대시로 시작하는 경우 필요합니다.)

답변2

zshtry :h수정자를 사용하는 경우

cd $file:h

당신은 추가할 수 있습니다N어느쪽으로 갈까N디렉토리 구조 업그레이드.

답변3

dirname 명령을 사용하는 것은 매우 간단합니다. 다음을 수행하십시오.

cd "$(dirname -- "$file")"

이제 한 단계 더 나아갈 수 있습니다.

file=/home/switch87/.bashrc
cd "$(dirname -- "$file")"
cd "$(dirname -- "$file")"/..

첫 번째 CD는 /home/switch87에 들어가고, 두 번째 CD는 /home에 들어갑니다.

답변4

readlink나는 및 의 조합을 사용하는 것을 선호합니다 dirname.

parent=$(readlink -f "$(dirname "$file")")
cd $parent

dirname경로에서 파일 이름을 제거하고 표준 readlink -f으로 만듭니다 $path/...

관련 정보