"mv file.txt ../"를 입력하면 파일은 어떻게 되나요?

"mv file.txt ../"를 입력하면 파일은 어떻게 되나요?

"file.txt" 폴더를 한 폴더 위로 이동하고 싶지만 mv file.txt ../file.txt입력이 없습니다 mv file.txt ../.

이제 파일이 사라졌고 오류 메시지가 표시되지 않습니다. 따라서 일부 작업이 성공적으로 완료된 것으로 보입니다. 그런데 여기서 무슨 일이 벌어지고 있는 걸까요?

백업이 있으니 적어도 괜찮습니다. 하지만 내가 무엇을 했는지, 무엇을 변경했는지, 아니면 파일이 마술처럼 사라졌는지 알고 싶습니다.

답변1

파일이 다음으로 이동되었습니다.실제해당 디렉토리에 도달하는 데 사용한 심볼릭 링크의 상위가 아니라 현재 있는 디렉토리의 상위입니다. 기본적으로 발생 시 cd동작은 ls또는 와 다릅니다. 위쪽 경로를 따라가면 효과적으로 심볼릭 링크를 거꾸로 따라가는 반면, 다른 디렉터리는 어떻게 도달했는지에 관계없이 자신이 있는 디렉터리의 실제 상위 디렉터리로 이동합니다.mv..cd

다음과 같은 디렉토리 트리를 상상해 보십시오( ~은 홈 디렉토리이고 shortcut은 에 대한 심볼릭 링크입니다 maindir/subdir).

~
├── maindir/
│   └── subdir/
│       └── file.txt
└── shortcut -> maindir/subdir/

간단히 말하면 cd표시되고 표시됩니다. ~/shortcutlsfile.txtpwd~/shortcut하지만pwd, 의 출력은 거기 에 도달하기 위해 따라온 심볼릭 링크를 기반으로 정확하지만 실제로는 (원한다면 "물리적으로") 에 위치하고 있으며 ~/maindir/subdir이를 알고 있으므로 ls실제 상위 디렉토리로 이동합니다 . 기대할 수도 있습니다.mvmv file.txt ..file.txt~/maindir~

스위치를 사용하면 cd다른 사람처럼 행동 할 수 있습니다 -P. 따라서 원래 명령 mv( ~/shortcut)을 실행하고 실행 한 디렉토리에 있는 경우 cd -P ..다음으로 이동합니다.실제상위 디렉토리(예 : ) 를 사용하면 간단한 .dll을 통해 실제 현재 디렉토리에 액세스 ~/maindir할 수 있습니다 .file.txtls file.txtcd -P .

답변2

mv file.txt ..정확히 mv file.txt ../file.txt같은 효과가 있습니다. 미묘한 차이가 있습니다 mv.

  • 마지막 인수가 디렉터리(여기 ..)인 경우 여러 소스를 입력할 수 있으며 동일한 이름을 가진 대상으로 이동됩니다.
  • 마지막 인수가 디렉터리가 아닌 경우(파일이거나 존재하지 않는 경우)하나의출처는 그곳으로 옮겼습니다.

따라서 dir이 디렉토리인 경우:

mv file1 file2 file3 dir  # Moves the files there
mv file dir               # Moves one file
mv file dir/newname       # Moves file, new name
mv file newfile           # Just renames

답변3

mv file.txt ../완벽하게 합법적인 명령입니다. 커널에 파일 이름을 현재 디렉터리의 상위 디렉터리로 이동하라고 지시합니다. file.txt사라지지 않고 명령을 실행하는 디렉터리의 상위 디렉터리에 계속 나타나야 합니다.

상황에 따라 상황이 바뀔 수 있습니다. 예를 들어 ../file.txt이미 존재하는 경우 해당 콘텐츠는 이제 의 콘텐츠가 되며 ./file.txt이전 ../file.txt에 포함된 콘텐츠는 삭제됩니다.

관련 정보