file
dir이 아닌 파일의 경로 이름이 저장되어 있다고 가정합니다 .
상위 디렉토리를 얻는 방법은 무엇입니까?
/..
값을 추가하면 다음이 작동하지 않는 이유
$ 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
zsh
try :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/..
.