次のファイルシステムがあるとします。
/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)"
バラよりこの回答。