相対パスはどのように機能しますか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
(ここではそのパスを介してアクセスするとき)に基づいています。link
some/dir
some/dir/link
some/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/L
b/c/L
同じファイルです。同じinodeですが、2つの異なるディレクトリに接続されています。それらはすべてターゲットとのシンボリックリンクです../a
。ただし、b/L
解析すると./a
while をb/c/L
指します./b/a
。