coreutils マニュアルからln
現在のディレクトリ以外の場所に相対シンボリックリンクを作成する場合、シンボリックリンクの解決とは違う現在のディレクトリで同じ文字列を解析する。したがって、多くのユーザーは、まず相対シンボリックリンクが作成される場所にディレクトリを変更することを好みます。 タブの完成またはその他のファイルの解析シンボリックリンクにあるものと同じターゲットを見つけます。
相対シンボリックリンクに格納されている文字列は、コマンドライン引数で完全に指定されたソースとターゲットのパス名によって決まりますln
。
現在のディレクトリがどのように関連しているかわかりません。したがって、多くのユーザーが現在のディレクトリを作成する前に、作成したい相対シンボリックリンクの親ディレクトリに変更したい理由を理解していません。言い換えれば、いくつかの例を挙げることができますか?ありがとうございます。
ベストアンサー1
覚えておくべき2つのことがあります。
ln -s
(なし-r
)保存先名通ると- 相手先を渡すと解決されます。リンク名基準、いいえ現在の作業ディレクトリ
例:
私は参加して/home/user/d0
リンクをしたいので、/home/user/file
次のようにします。
ln -s ../file .
../file
の有効なパスですd0
。
d1
サブディレクトリ()があり、/home/user/d0/d1
ディレクトリを変更せずに../file
()へのリンクを配置するには、/home/user/file
次の手順を実行する必要があります。
ln -s ../../file d1/
相対パスは次のようにする必要があるからです。リンク名基準、現在の作業ディレクトリではありません。 (おそらく)(というファイルがない限り)../../file
に関連するすべてを解決するので、オートコンプリート機能が提供されていないため、エラーが発生しやすいです。d0
/home/file
だから私はd1
最初に変更しました。
cd d1
ln -s ../../file .
../../file
現在のディレクトリとリンク名の両方に意味があり、オートコンプリートが始まり、私の名前が正しいと確信しています。
GNUには、これらの相対パスを手動で作成する必要がなくなり、それを簡単にするフラグがln
あります。--relative|-r
これにより、現在のディレクトリへの相対パスまたは絶対パスを使用でき、必要に応じてリンク名に基づいて相対化されます。