셸에서 현재 작업 디렉터리의 이름을 바꾸는 것이 가능합니까(나의 특별한 경우에는 Bash)? 간단한 방법으로 이 작업을 수행하려고 하면 오류가 발생합니다.
nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy
현재 디렉토리를 변경하지 않고 이를 수행할 수 있는 다른 방법이 있습니까? 상위 디렉토리로 변경하면 쉽게 이 작업을 수행할 수 있다는 것을 알고 있지만 이것이 필요한지 궁금합니다. 결국, 다른 셸에서 디렉터리 이름을 바꾸면 나중에 원래 셸에서 파일을 만들 수 있습니다.
답변1
예, 하지만 기호를 사용하지 않고 이름으로 디렉토리를 참조해야 합니다 .
. 상대 경로를 사용할 수 있습니다. 이는 .
or 이외의 경로로 끝납니다 ..
.
/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"
작동합니다.
답변2
@Gilles의 답변으로 사용하지만버팀대 확장간략하게 설명하자면:
mv ../{test,test2}
답변3
"현재 디렉토리 변경"을 정의하는 방법에 따라 다릅니다.
/tmp/test$ (cd .. && mv test test2)
/tmp/test$ pwd
/tmp/test
/tmp/test$ pwd -P
/tmp/test2
서브쉘을 생성하고 서브쉘의 현재 디렉터리를 변경하지만 기본 쉘은 원래 위치에 그대로 둡니다.