シンボリックリンク/外部ファイルを介してファイルをコピーする方法は? (目的地)[重複]

シンボリックリンク/外部ファイルを介してファイルをコピーする方法は? (目的地)[重複]

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

/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

file1 が表示されません。検索して見つかりました。/home/me/dir1/dir2/dir3/dir4/dir5/file1

cpそれがシンボリックディレクトリにあることに気づいていないようです。

私がどうするcp 外のシンボルフォルダ?

または、参照を逆参照する必要があることをどのようにcp理解しますか(ここで../目的地マニュアルページで参照されています)?

私は何を逃したことがありませんか?可能ですか?

ありがとうございます!

(最後の注意 - 実際のユースケースは、フルパスを入力せずに../another-symlink-directory/ファイルをコピーしようとするシンボリックリンクディレクトリ内の深いディレクトリ構造にあります。これは私が興味を持っているシンボリックリンクのポイントです。の一つです。

答え1

実際にをクリックしましたcd linkdir6。実際にはそのディレクトリにあるので、../はそれより1レベル高いdir5にあります。

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

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

個人的には、cpで-t(target)オプションを好みます。

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

答え2

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

バラよりこの回答

関連情報