cp는 소스 위치에 새 파일을 복사하지 않습니다(cp 명령이 트리거된 후 생성된 파일).

cp는 소스 위치에 새 파일을 복사하지 않습니다(cp 명령이 트리거된 후 생성된 파일).

다음 명령을 사용하여 소스 디렉터리의 내용을 대상 디렉터리로 복사합니다.

cp src/* dest

하지만 이 명령을 호출한 후 내용을 복사할 때 src 디렉터리에 추가 파일을 생성하면 새로 생성된 파일은 dest 디렉터리에 복사되지 않습니다.

그 이유를 설명해 주실 수 있나요? cp콘텐츠가 실행될 때 계정을 생성 cp한 다음 해당 계정에 따라 복사하여 새로 생성된 콘텐츠를 무시할 수 있습니까?

답변1

이는 "src/*"가 cp(파일 목록으로 확장됨)에 의해 평가되지 않고 cp가 호출되기 전의 쉘에 의해 평가되기 때문입니다.

답변2

src/*쉘 확장으로 Andreas가 옳습니다 . 그러나 와일드카드를 지정하지 않더라도 cp새로 생성된 파일을 건너뛸 가능성이 있습니다.경쟁 조건cp디렉터리에 액세스하는 프로세스와 디렉터리를 수정하는 사용자(실제로는 사용자를 대신하여 파일을 생성하는 프로세스) 사이에 있습니다.

구현에 관한 한GNU 연결이 경우 실제로 복사하기 전에 디렉토리 항목 목록을 얻습니다( copy_dir함수 참조).여기).

관련 정보