쉘에서 현재 디렉토리 이름 바꾸기 - 가능합니까?

쉘에서 현재 디렉토리 이름 바꾸기 - 가능합니까?

셸에서 현재 작업 디렉터리의 이름을 바꾸는 것이 가능합니까(나의 특별한 경우에는 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

서브쉘을 생성하고 서브쉘의 현재 디렉터리를 변경하지만 기본 쉘은 원래 위치에 그대로 둡니다.

관련 정보