web-dev-qa-db-ja.com

2つの既存のファイル間にリンクを作成する

たとえば、ファイルa.txtとファイルb.txtがあります。 a.txtからb.txtへのリンクが必要です。ファイルa.txtを開く/読み取る場合、ファイルb.txtを開く/読み取る必要があります。 ln -s a.txt b.txtのようなものを試すと、ファイルb.txtが存在するため、エラーが発生します。 a.txtからb.txtへのリンクを作成するにはどうすればよいですか?

3
Sam

コマンドb.txtでファイルrm b.txtを削除してから、コマンドln -s a.txt b.txtでシンボリックリンクを作成する必要があります。

b.txtからa.txtへのハードリンクを使用してln a.txt b.txtを実行すると、a.txtb.txtの両方がハードドライブ上の同じファイルを指し、a.txtb.txtから読み取ることができるファイルを削除しません。 b.txtからa.txtへのシンボリックリンクを使用すると、a.txtファイルが削除され、b.txtシンボリックリンクが無効になります。ハードリンクの詳細: https://en.wikipedia.org/wiki/Hard_link

3

最初に常にヘルプのマニュアルページを確認してください。時間を大幅に節約できます。または、本当に忙しい場合は、シェルのln --help

Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form) ....

ヘルプテキストのさらに下に、

...
-s, --symbolic  make symbolic links instead of hard links
-f, --force     remove existing destination files
...

つまり、ある意味で、my_secret.fileというファイルのリンクをmy_secret.linkとして作成する場合は、次のようなコマンドを発行します。

ln -sf my_secret.file my_secret.link

ここでls -l my_secret.linkを実行すると、あなたはこのようなものを得るでしょう

lrwxrwxrwx 1 foouser groupbar  7 Jul 13 17:17 my_secret.link -> my_secret.file

lrwxrwxrwxの「l」は、そのリンクであることを示しています。

編集:ラフルが最初に攻撃した。

1
ashishk

-fオプションを使用すると、リンクを作成する前に既存の宛先ファイルがあれば削除されます。

ln -sf a.txt b.txt

man lnにあります:

[OPTION] 
-f, --force
          remove existing destination files
0
Rahul