誰かがこれについて詳しく説明してもらえますか?公式文書にこの説明があります?
シンボリックリンクからコピーするとき、cpは通常再帰的にコピーしないか、または--link(-l)が使用されている場合にのみリンクに従います。
答え1
シンボリックリンクがあるとしますfoo/bar -> baz
。
% mkdir foo
% ln -s baz foo/bar
% tree foo
foo
└── bar -> baz
1 directory, 1 file
直接コピーすると、ターゲットfoo/baz
はcp
シンボリックリンクに沿ってコピーされます。
% 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