問題
cp -H
またはcp -L
でファイルをコピーすると、同じ結果が得られます。
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
ここでのこの回答では、両方のオプションを、と組み合わせて使用される同様のUNLESSとして説明します-R
。私ではありません。ソフトリンクされたハードリンクファイルは、ソースでポイントするファイルの名前が変更されたコピーになります。
質問:
cp -H
and の適切な使用法は何cp -L
ですか?これは予想される動作ですか?
私の解決しようとする試み:
man cp
両方のオプションでまったく同じことを教えてくれますが、info cp
「」の言葉遣いはそれをさらに混乱させます。多分これを少し分解するのを手伝うことができます:
-H
コマンドライン引数がシンボリックリンクを指定する場合、シンボリックリンク自体ではなく、それが指すファイルをコピーします。ただし、再帰トラバーサルを介して検出されたシンボリックリンクをコピー(その性質を保持)します。
これは私には矛盾のように聞こえます:シンボリックリンクの性質 «は、それがどこかを指しているということだと思います…
-L, --dereference
シンボリックリンクからコピーする場合は、シンボリックリンクに従ってください。このオプションでcp
は、シンボリックリンクを作成できません。たとえば、ソースツリーの(通常のファイルへの)シンボリックリンクは、宛先ツリーの通常のファイルにコピーされます。
シンボリックリンクが通常のファイルではないことは知っていますが、…ここでこの説明をやりすぎだと思います。
info cp
の選択が実際に–を意味するものを理解しようと懸命に努力しました。そして、この投稿についてです。投稿には、実際の文言も含まれていますinfo cp
-したがって、少なくともそれを開く必要があります
info cp
、検索し-R
ます。それは言うCopy directories recursively.
しかし、あなたは非ディレクトリでテストしています。違いは、コマンドライン引数ではなく、コピーするディレクトリ内の内容に関するものです。