지정된 파일이 이미 존재하는 경우 cp 및 mv

지정된 파일이 이미 존재하는 경우 cp 및 mv

done이라는 파일이 이미 존재하는 경우 다음 명령을 실행하면 어떻게 되나요?

$ cp to_do done
$ mv to_do done

답변1

done내용으로 대체됩니다to_do

간단한 테스트를 통해 이를 확인할 수 있습니다.

$ echo a > done
$ echo b > to_do
$ cp to_do done 
$ cat done
b

그리고

$ echo a > done
$ echo b > to_do
$ mv to_do done
$ cat done
b

편집하다

의견을 기반으로 한 몇 가지 추가 정보

  • donedone또는 가 디렉토리이면 대체되지 않습니다 to_do. done디렉터리인 경우 파일이 이동 to_do/복사됩니다.존재하다목차. to_do디렉터리인 경우 오류 메시지가 표시됩니다 .
  • 파일을 덮어쓸 때 -i지시 mv하고 경고할 수 있는 옵션을 사용하세요 .cp
  • 일부 배포판에서는 cpand mv는 and(특히 루트 사용자의 경우)의 별칭 입니다.cp -imv -i

답변2

여기서는 다음과 같은 경우 일반 파일에 대해 이야기하고 있다고 가정합니다.

cp to_do done

쓸 수 없는 경우 done오류 메시지가 표시됩니다. 그렇지 않으면 콘텐츠가 to_do복사됩니다.초과하다 done. 이는 done동일한 inode, 권한, 소유권, 출생 시간을 유지하는 것을 의미합니다. ( -p또는 -a일부 구현에서는) 복사를 시도할 일부 속성입니다 to_do.

그리고:

cp -f to_do done

done링크 에 대한 쓰기 권한이 없으면 cp링크가 먼저 연결 해제되고 done(현재 디렉토리에 대한 쓰기 권한이 있고 현재 디렉토리에 비트가 설정되어 있지 않은 한 이 작업을 수행할 수 있음 t) 새 링크를 만듭니다. 하나. 마치 이전에 존재하지 않았던 것처럼 cp가능한 한 많은 속성을 복사하려고 합니다 .to_dodone

그리고

mv to_do done

to_do이름만 바꿨어요. 현재 디렉터리만 수정됩니다. 사전에 존재하는 경우 done먼저 연결이 해제됩니다.

관련 정보