シンボリック リンクを越えて/シンボリック リンク外でファイルをコピーするにはどうすればよいですか? (dest)

シンボリック リンクを越えて/シンボリック リンク外でファイルをコピーするにはどうすればよいですか? (dest)

次のようなファイル システムがあるとします。

/home/me/dir1/dir2/dir3/dir4/dir5/dir6/file1

次に/home/me/dir1、 でシンボリック リンクを作成します。

$ cd /home/me/dir1
$ ln -s /home/me/dir1/dir2/dir3/dir4/dir5/dir6 linkdir6

私は、file1 をホーム ディレクトリにコピーしようとしています (これは簡略化した例であり、これよりも複雑です。"/home/me/" は実際にははるかに複雑なディレクトリ構造であるため、"~/" は解決策ではありません)。

$ cd linkdir6
$ cp file1 ../
$ cd ..
$ ls
dir2 linkdir6

ファイル1が見つかりません。検索してみると、/home/me/dir1/dir2/dir3/dir4/dir5/file1

cpシンボリックディレクトリ内にあることに気付いていなかったようです。

どうすればcp からシンボリックフォルダーですか?

または、どのようにすれば、参照解除されるcpのか理解できるでしょうか(../目的地マニュアルページの が参照されていますか?

何か見落としているのでしょうか? これは可能なのでしょうか?

ありがとう!

(最後の注意 - 実際の使用例は、1 つのシンボリックリンク ディレクトリ内の深いディレクトリ構造で、完全なパスを入力せずにファイル ../another-symlink-directory/ をコピーしようとすることです。これが、私が考えるシンボリック リンクのポイントの 1 つです)

答え1

実際に のリンクをたどっていますcd linkdir6。実際にそのディレクトリにいるため、 ../ はそこから 1 レベル上の dir5 にあります。

cp を使用する最も安全な方法は、ターゲット ディレクトリにいることであり、その後リンクを使用してソース ファイルにアクセスします。

cd ~/me/dir1  #.. Target
cp linkdir6/file1 .

個人的には、cp の -t (ターゲット) オプションを好みます。

cp -t ~/me/dir1 dir1/linkdir6/file1

答え2

$ cp file1 "$(cd .. && pwd -P)"

見るこの答え

関連情報