mv 명령을 사용하여 한 폴더에서 다른 폴더로 파일 이동 - 이상한 예

mv 명령을 사용하여 한 폴더에서 다른 폴더로 파일 이동 - 이상한 예

유닉스 명령어를 배우고 있어요surrey.ac.uk의 초보자를 위한 UNIX 튜토리얼거기서 나는 파일을 이동하는 이상한 방법을 발견했습니다. 특히 내 홈 디렉터리에 unixstuff 폴더가 있고 unixstuff 내에 백업 폴더와 Caiti.txt 및 Caiti.bak 파일이 있습니다.

위 링크에 따르면 Caiti.bak 파일을 unixstuff에서 백업으로 이동하려면 현재 디렉터리가 unixstuff인지 확인하고 다음 명령을 실행해야 했습니다.

mv Caiti.bak backups/.

이 문자들이 무엇을 의미하는지 설명해 주시겠습니까 /.? 점은 현재 디렉터리(이 경우 unixstuff)를 나타냅니다. 다음 명령을 실행하면:

mv Caiti.bak backups

어쨌든 작동합니다.

답변1

긴 이야기 짧게

이렇게 하면 대상이 기존 디렉터리가 되도록 강제됩니다. 그렇지 않으면 명령이 아무런 효과도 없이 실패하며 안전 장치로 사용됩니다.


의미.

일반적인 Unix/Unix 계열 파일 시스템의 각 디렉토리에는 두 개의 특수 디렉토리가 있습니다. 하나는 해당 디렉토리를 참조하고 다른 .하나는 해당 디렉토리가 있는 상위 디렉토리를 참조합니다( ..디렉토리 계층에서 뒤로 이동할 수 있음). 그들은 발견된 장소와 관련이 있습니다. 따라서 .디렉토리 안에는 backups reference라는 디렉토리 가 있습니다 backups. 즉, 이라는 디렉터리가 존재하면 backupsbackups/.동일합니다 backups.


소스 또는 대상이 파일 또는 디렉터리인 경우 다른 동작

  • 디렉터리가 존재하는 경우 두 명령 모두 동일한 효과를 갖습니다. 즉, mv대상이 디렉터리이면 소스가 해당 디렉터리로 이동됩니다. 이는 예상된 결과입니다.

  • 대상이 backups디렉터리가 아닌 파일인 경우:

    • 첫 번째 사례는 오류로 인해 실패합니다.Not a directory
    • 두 번째 사례는 이름을 바꾸고 Caiti.bak덮어씁니다.backups
  • 대상이 존재하지 않는 경우:

    • 첫 번째 사례는 실패합니다.No such file or directory
    • 두 번째 명령은 파일 이름을 Caiti.bakfile 로 변경하여 backups이전 상황을 발생시키고 다음에 발생할 때 데이터가 손실될 수 있습니다.

/.존재해야 하는 디렉터리 대상에 추가하고 오류가 발생하면 스크립트를 중단하는 것이 좋습니다 .

/이 모든 경우는 소스가 첨부된 경우에만 동일하게 작동합니다.문서디렉토리보다는.

이것을 가정할 수 없다면 이 예의 소스는 디렉터리입니다.

mv somedirectory targetnothere/

실패하지 않을 것이다(그리고디렉토리넣는 대신 이름이 변경됩니다.아무데도 타겟팅하지 않음또는 중단됨). 추가 콘텐츠 .로 인해 이 사례가 실패하게 됩니다.

$ mv somedirectory targetnothere/.
mv: cannot move 'somedirectory' to 'targetnothere/.': No such file or directory

관련 정보