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

셸 내에서 현재 작업 디렉토리의 이름을 바꿀 수 있습니까 (특정 경우에는 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 

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

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다