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


24

쉘 내에서 현재 작업 디렉토리의 이름을 바꿀 수 있습니까 (특별한 경우 배쉬)? 이 방법을 간단하게 시도하면 오류가 발생합니다.

nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy

현재 디렉토리를 변경하지 않고 다른 방법이 있습니까? 부모 디렉토리로 변경하여 쉽게 수행 할 수 있다는 것을 알고 있지만 이것이 필요한지 궁금합니다. 결국 다른 쉘에서 디렉토리 이름을 바꾸어도 나중에 원래 쉘에서 파일을 작성할 수 있습니다.

답변:


41

예. 그러나 .표기법 을 사용하지 않고 이름으로 디렉토리를 참조해야합니다 . 상대 경로를 사용할 수 있습니다 . .또는 이외의 것으로 끝나야합니다 ...

/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"하지 않지만 작동합니다.


완벽하다 ... 정확히 내가 원했던 대답.
Nathan Osman

5
기본 문제는 특수한 '.'을 (를) 제거하거나 이름을 바꿀 수 없다는 것입니다. 및 ".."이름.
Barmar


1

그리고 "현재 디렉토리 변경"을 정의하는 방법에 따라 다릅니다.

/tmp/test$ (cd .. && mv test test2)
/tmp/test$ pwd
/tmp/test
/tmp/test$ pwd -P
/tmp/test2

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.