Windows의 Bash: mv 명령 - 자체 하위 디렉터리로 이동할 수 없습니다.

Windows의 Bash: mv 명령 - 자체 하위 디렉터리로 이동할 수 없습니다.

Windows Linux 하위 시스템의 소스에서 Ruby를 설치하려고 합니다. 내 홈 디렉토리의 소스에서 성공적으로 빌드했으며 ~/ruby/ruby-2.3.0이를 /opt/rubies/.

move 명령을 실행하면 다음 오류가 발생합니다.

/# mv ~/ruby/ruby-2.3.0/ /opt/rubies/
mv: cannot move ‘/root/ruby/ruby-2.3.0/’ to a subdirectory of itself, ‘/opt/rubies/ruby-2.3.0’

경로 자체에서 알 수 있듯이 디렉토리 자체의 하위 디렉토리가 아닌 완전히 다른 위치로 디렉토리를 이동하므로 이는 매우 혼란스럽습니다.

내 홈 디렉터리 아래의 모든 이동 명령에 대해 동일한 작업을 수행합니다.

~# mv test/ /
mv: cannot move ‘test/’ to a subdirectory of itself, ‘/test’

그리고 어떤 파일도 복사할 수 없는 것 같습니다.

~# cp ruby/ruby-2.3.0/ /opt/rubies/ruby-2.3.0
cp: omitting directory ‘ruby/ruby-2.3.0/’

내가 뭔가 잘못하고 있는 걸까요?

답변1

/소스 인수에 후행 없이 시도해 보세요 . 이를 통해 OS에 디렉토리의 내용을 이동하라고 지시하지만 디렉토리가 아닌 파일을 지정하지는 않습니다. 이는 실제로 많은 유닉스 시스템이 명령 전반에 걸쳐 따르는 규칙입니다.

그래서 대신:mv ~/ruby/ruby-2.3.0/ /opt/rubies/

노력하다:mv ~/ruby/ruby-2.3.0 /opt/rubies/

또한 PWD = ~/ruby/ruby-2.3.0을 사용하여 명령을 실행하고 있지 않은지 확인해야 합니다. 왜냐하면 현재 있는 디렉터리를 이동하려고 하기 때문입니다.cd ~; mv ~/ruby/ruby-2.3.0 /opt/rubies/

답변2

내가 뭔가 잘못하고 있는 걸까요?

mv ~/ruby/ruby-2.3.0/ /opt/rubies/

제거해야합니다둘 다후행 /s.

디렉토리가 /opt/rubies/ruby-2.3.0이미 존재합니까? 다음을 실행하여 확인하세요.

ls /opt/rubies/ruby-2.3.0

존재하는 경우 다음 명령을 실행하여 제거하십시오.

rm -rf /opt/rubies/ruby-2.3.0

이제 이동을 수행하려면 다음 명령을 사용하십시오.

mv ~/ruby/ruby-2.3.0 /opt/rubies

이렇게 하면 디렉토리가 생성됩니다./opt/rubies/ruby-2.3.0


추가 자료

  • Linux용 Bash 명령줄의 AZ 인덱스- Bash 명령줄과 관련된 모든 것에 대한 훌륭한 참고 자료입니다.
  • ㅋㅋㅋ- 파일에 대한 정보를 나열합니다.
  • mv- 파일이나 디렉터리를 이동하거나 이름을 바꿉니다.
  • RM- 파일 제거(삭제/링크 해제)

답변3

모두의 답변에 감사드립니다. 하지만 이는 Windows용 Bash 베타 버전의 버그인 것으로 밝혀졌습니다.

개발자 중 한 명이 게시했습니다.2016-04-11에 이슈 트래커에 댓글 달기:

개발 브랜치 중 하나에 내부적으로 수정 사항이 있습니다. 너무 오래 전에 내부자 빌드에 도달해야 합니다.

관련 정보