たとえば、ファイルa.txt
とファイルb.txt
があります。 a.txt
からb.txt
へのリンクが必要です。ファイルa.txt
を開く/読み取る場合、ファイルb.txt
を開く/読み取る必要があります。 ln -s a.txt b.txt
のようなものを試すと、ファイルb.txt
が存在するため、エラーが発生します。 a.txt
からb.txt
へのリンクを作成するにはどうすればよいですか?
コマンドb.txt
でファイルrm b.txt
を削除してから、コマンドln -s a.txt b.txt
でシンボリックリンクを作成する必要があります。
b.txt
からa.txt
へのハードリンクを使用してln a.txt b.txt
を実行すると、a.txt
とb.txt
の両方がハードドライブ上の同じファイルを指し、a.txt
はb.txt
から読み取ることができるファイルを削除しません。 b.txt
からa.txt
へのシンボリックリンクを使用すると、a.txt
ファイルが削除され、b.txt
シンボリックリンクが無効になります。ハードリンクの詳細: https://en.wikipedia.org/wiki/Hard_link
最初に常にヘルプのマニュアルページを確認してください。時間を大幅に節約できます。または、本当に忙しい場合は、シェルの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」は、そのリンクであることを示しています。
編集:ラフルが最初に攻撃した。
-f
オプションを使用すると、リンクを作成する前に既存の宛先ファイルがあれば削除されます。
ln -sf a.txt b.txt
man ln
にあります:
[OPTION]
-f, --force
remove existing destination files