lnのパスにはハードリンクとソフトリンクが含まれています。

lnのパスにはハードリンクとソフトリンクが含まれています。

相対パスはどのように機能しますかln (-s or not)?たとえば、私が入力した場合、ln -s foo bar/banana.txtこれはどういう意味ですか? fooは何に関連していますか?現在の経路とは何の関係もないようだからです。そして、削除することと-s削除しないことに違いはありますか?私はこれをテストしましたが、結果は私には理解されておらず、マニュアルページでもこれについて説明していないようです。誰でもこれを説明できますか?

ベストアンサー1

あるものとないものには違いがあります-s

以内-s:

ln -s path/to/file some/dir/link

path/to/fileシンボリックリンク先some/dir/link(またはディレクトリのsome/dir/link/file場合)に設定します。link

シンボリックリンクは、シンボリックリンクの宛先であるパス(ゼロ以外のバイト配列である可能性があり、一部のシステムでは空の文字列も許可します)を/含む/という特別な種類のファイルです。ln最初のパラメータに設定します。

リンクが確認された後(リンクが後で使用されるとき)、パスは(ハード)リンクがあったディレクトリpath/to/file(ここではそのパスを介してアクセスするとき)に基づいています。linksome/dirsome/dir/linksome/dir/link

path/to/fileコマンドが実行されるとき(または常に)存在する必要はありません。ln

そして:

ln path/to/file some/dir/link

これは次のようになります。

cp path/to/file some/dir/link

path/to/file実行中のプロセスの現在の作業ディレクトリに基づいていますln

シンボリックリンクへの複数の(ハード)リンクの生成を防ぐ方法はありません。たとえば、

$ mkdir -p a b/c b/a
$ ln -s ../a b/L # b/L a symlink to "a"
$ ln b/L b/c/L

b/Lb/c/L同じファイルです。同じinodeですが、2つの異なるディレクトリに接続されています。それらはすべてターゲットとのシンボリックリンクです../a。ただし、b/L解析すると./awhile をb/c/L指します./b/a

おすすめ記事