셸 내에서 현재 작업 디렉토리의 이름을 바꿀 수 있습니까 (특정 경우에는 Bash)? 이 작업을 간단한 방법으로 시도하면 오류가 발생합니다.
nathan@nathan-desktop:/tmp/test$ mv . test2 mv: cannot move ‘.’ to ‘test2’: Device or resource busy
현재 디렉토리를 변경하지 않고이를 수행 할 수있는 다른 방법이 있습니까? 부모 디렉터리로 변경하면 쉽게이 작업을 수행 할 수 있지만 이것이 필요한지 궁금합니다. 결국 다른 셸에서 디렉터리 이름을 변경해도 나중에 원래 셸에 파일을 만들 수 있습니다.
답변
예,하지만 .
표기법입니다. 상대 경로를 사용할 수 있으며 .
또는 ..
이외의 다른 것으로 끝나야합니다.
p>
/tmp/test$ mv ../test ../test2 /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2
절대 경로를 사용할 수 있습니다.
/tmp/test$ cd -P . /tmp/test2$ mv "$PWD" "${PWD%/*}/test3" /tmp/test2$
마찬가지로 rmdir .
는 작동하지 않지만 rmdir "$PWD"
는 작동합니다.
댓글
답변
@Gilles 답변에서와 같이 간결함을 위해 중괄호 확장 사용 :
mv ../{test,test2}
Answer
그리고 이것은 “현재 디렉토리 변경 ”.
/tmp/test$ (cd .. && mv test test2) /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2
서브 쉘을 생성하고 서브 쉘의 현재 디렉토리를 변경하지만 기본 쉘은 그대로 둡니다.
. " 및 .. " 이름.