相対シンボリックリンクを作成する前に現在のディレクトリを親ディレクトリに変更する理由

相対シンボリックリンクを作成する前に現在のディレクトリを親ディレクトリに変更する理由

coreutils マニュアルからln

現在のディレクトリ以外の場所に相対シンボリックリンクを作成する場合、シンボリックリンクの解決とは違う現在のディレクトリで同じ文字列を解析する。したがって、多くのユーザーは、まず相対シンボリックリンクが作成される場所にディレクトリを変更することを好みます。 タブの完成またはその他のファイルの解析シンボリックリンクにあるものと同じターゲットを見つけます。

相対シンボリックリンクに格納されている文字列は、コマンドライン引数で完全に指定されたソースとターゲットのパス名によって決まりますln

現在のディレクトリがどのように関連しているかわかりません。したがって、多くのユーザーが現在のディレクトリを作成する前に、作成したい相対シンボリックリンクの親ディレクトリに変更したい理由を理解していません。言い換えれば、いくつかの例を挙げることができますか?ありがとうございます。

ベストアンサー1

覚えておくべき2つのことがあります。

  1. ln -s(なし-r)保存先名通ると
  2. 相手先を渡すと解決されます。リンク名基準いいえ現在の作業ディレクトリ

例:

私は参加して/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これにより、現在のディレクトリへの相対パスまたは絶対パスを使用でき、必要に応じてリンク名に基づいて相対化されます。

おすすめ記事