나는 최근에 내 bash 스크립트에서 오해하고 조금 궁금 해서요 :
- 이것은 예상 된 시스템 동작입니까 아니면 버그입니까?
- 이상적인 해결 방법은 무엇입니까?
본질적으로, 문제는 이것으로 끝났다. 먼저 다음 레이아웃을 가진 기존 디렉토리 구조가 있습니다.
/opt/dir/file.a
/opt/dir/file.b
/opt/dir/file
어디에 file
~이다. 하드 링크 에 file.a
. 나는 대신하고 싶었다. file
선택한 쉘 스크립트로 file.a
또는 file.b
매개 변수에 따라 다음과 같이 실행했습니다.
cp my_file /opt/dir/file
문제는 file
에 대한 하드 링크입니다. file.a
, (두 파일이 실제로 동일한 inode에 대해 단지 두 개의 이름이라는 것을 의미), 변경 사항은 file
과 file.a
. 이했다 명백하게 내가 원하는 걸
그것은 보인다. cp
효과적으로 연계 된 명령 /opt/dir/file
truncate 파일 플래그를 다음과 같이 지정합니다. fopen("file", "w+")
. 그것을 썼다. 내가 하드 링크를 끊기를 기대하고 있었다. 새로운 그 이름으로 파일.
이것이 올바른 것일까? cp
? 그것은 나에게 비현실적으로 보인다. 한 위치에서 다른 위치로 파일을 복사 할 때 내 마음에 그것을 다시 쓰지 않고 대체합니다. 거기에 대한 플래그가 있습니까? cp
이걸 피하려면? 현재 해결해야 할 점은 rm /opt/dir/file && cp my_file /opt/dir/file
.
맨 페이지를보고 등장하다 그 cp --remove-destination my_file /opt/dir/file
올바른 해결책 일지 모르지만 나는 여전히 모든 사람들이 주제에 대해 말하고 싶은 것에 관심이있다.