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
편집하다
의견을 기반으로 한 몇 가지 추가 정보
done
done
또는 가 디렉토리이면 대체되지 않습니다to_do
.done
디렉터리인 경우 파일이 이동to_do
/복사됩니다.존재하다목차.to_do
디렉터리인 경우 오류 메시지가 표시됩니다 .- 파일을 덮어쓸 때
-i
지시mv
하고 경고할 수 있는 옵션을 사용하세요 .cp
- 일부 배포판에서는
cp
andmv
는 and(특히 루트 사용자의 경우)의 별칭 입니다.cp -i
mv -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_do
done
그리고
mv to_do done
to_do
이름만 바꿨어요. 현재 디렉터리만 수정됩니다. 사전에 존재하는 경우 done
먼저 연결이 해제됩니다.