シンボリックリンクからコピーするときのGNU cpのデフォルトの動作は何ですか?

シンボリックリンクからコピーするときのGNU cpのデフォルトの動作は何ですか?

誰かがこれについて詳しく説明してもらえますか?公式文書にこの説明があります

シンボリックリンクからコピーするとき、cpは通常再帰的にコピーしないか、または--link(-l)が使用されている場合にのみリンクに従います。

ベストアンサー1

シンボリックリンクがあるとしますfoo/bar -> baz

% mkdir foo
% ln -s baz foo/bar
% tree foo
foo
└── bar -> baz

1 directory, 1 file

直接コピーすると、ターゲットfoo/bazcpシンボリックリンクに沿ってコピーされます。

% cp foo/bar .
cp: cannot stat 'foo/bar': No such file or directory

ここでは、再帰コピーでは到達しcpないため、foo/barターゲットファイルがコピーされます。

代わりに、再帰をコピーしてfoo指示すると、ターゲットではcpなくシンボリックリンク自体がコピーされます。

% cp -r foo foo2
% tree foo2
foo2
└── bar -> baz

1 directory, 1 file

再帰的にコピーしようとしてもこの-lオプションを設定すると、cp次のシンボリックリンクが再試行されます。

% cp -rl foo bar3
cp: cannot stat 'foo/bar': No such file or directory

おすすめ記事