sd/common.py -> actual_file
生成されたファイルに置き換えるシンボリックリンクがあります。
しかし、そのたびに
cp /tmp/Star_Wrangler/common.py sd/common.py
...私が望むようにシンボリックリンクを置き換えるのではなく、コピーして/tmp/Star_Wrangler/common.py
上書きします。actual_file
コピーする前にシンボリックリンクを削除することを忘れるたびに、これが発生します。
私が期待する動作を得るためのオプションはありますか?マニュアルを見ましたが、すべてのターゲットへのシンボリックリンクではなく、ソースへのシンボリックリンクについて話します。
ベストアンサー1
どのUnixを使用しているかによって異なります。
cp -f
一部のBSDシステム(OpenBSD、FreeBSD)では、シンボリックリンクのリンクを解放(削除)してソースコードに置き換えることがわかります。
GNUではcp
同じ効果がないため、longオプションを使用する必要があります--remove-destination
。
macOSでは、cp -c
マニュアルの説明に従って「ファイルのコピー」を使用してくださいclonefile(2)
。
NetBSDではcp -a
(「アーカイブモード」、このシステムと同じcp -RpP
)を使用してください。すべてのシステムに同じまたは類似の-a
オプションがありますが、GNU、macOS、OpenBSD、またはFreeBSDでは機能しませんcp
(GNUシステムでは同じ-dR --preserve
)。
あなたはこれに直接言及しました:ファイルをコピーする前にリンクを削除すると問題が解決します。このrm
ユーティリティは、リンクが参照するファイルではなくリンクを削除します。これは、シンボリックリンクを通常のファイルに置き換える最も移植可能な方法でもあります。
スクリプトを書くrm
ときcp
。
インタラクティブな作業中にこの作業を忘れ続けると、cp
この状況に特定のオプションを使用することも忘れられます。