配置されたディレクトリに関連して解決するシンボリックリンクが必要です。そのようなものを作成するためにどのコマンドが使用されますか?
配置されたディレクトリに関連して解決するシンボリックリンクが必要です。そのようなものを作成するためにどのコマンドが使用されますか?
回答:
ln -s ../some/other/file linkname
指定したパスはファイルとともに保存されます。ファイルにアクセスすると、保存されたパスが検索され、ファイルに対して相対的に展開されます。リンクを作成したときにどのディレクトリにいたかはわかりません。
ln -s ../some/other/file /some/dir/linkname
ln -s ./file linkname
ので、.
現在のディレクトリを指します。
ln -s somedir/original-dir link-name
動作しません。link-name
無効なリンクを含む名前のディレクトリを作成します。動作するコマンドは次のln -sr somedir/original-dir link-name
GNU coreutilsのln(> = 8.16)の最近のバージョンは、--relative
(または-r
)オプションをサポートします。これはln -s
、2つの絶対パスまたは相対(作業ディレクトリに関して)パスで呼び出すことができることを意味します。シンボリックリンクに書き込まれます。
-r
オプションは、クロスコンパイルを行い、ビルドホストでは絶対パスが必要ですが、ターゲットでは相対パスが必要な場合に役立ちます。
ln -r -s targetfile myalias
あなたがそれを修正するのを手伝うことができます
理解する必要があるのは、基本的に、シンボリックリンクはファイルを含むディレクトリエントリのようなものではなく、テキストファイルのようなものだということです。もしあなたが
echo ../poo >/file/name
それは非常に似ています
ln -s ../poo /file/name
システムは、/file/../poo
存在するかどうかをまったく気にしません。シンボリックリンクに入れられるのは単なるテキストです。何かがシンボリックリンクを開こうとすると、システムはそれを解決しようとします。
ファイル名を補完するシェルを使用している場合、この機能は、完全に別のディレクトリのシンボリックリンクのターゲットとして使用することになっても、現在の作業ディレクトリに関連するファイル名を補完できるため、混乱を招く可能性があります。
<
、システムがメモリを割り当てる方法を変更できるようにするために使用されたBSDなどがあります。もちろん<
、そのディレクトリに名前の付いたファイルはありません。それは、特定のプラットフォームの通常のテキストファイルに対して魅力的なプロパティを持つ、非常に小さなファイルのようなものを作成するための安価な方法です。
相対リンクは、OS Xでは私にとって扱いにくいものでした。つまり、
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin ~/bin
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin/ ~/bin
両方とも機能しませんでした(何かが作成されましたが、ディレクトリではありませんでした)。絶対パスを使用して目的のリンクを作成しました。
~/Dropbox/git/dave-bot $ ln -s ~/Dropbox/git/codyhess/bin/ ~/bin
ln -s Dropbox/git/codyhess/bin ~/bin
相対パスを使用してシンボリックリンクを作成する方法を詳細に説明したいだけです(詳細な例を使用)。
コメントでIgnacio Vazquez-Abramsが言及したように、現在のディレクトリではなく、シンボリックリンクが作成される場所に相対的なファイル/フォルダの場所を指定する必要があります。
例
あなたにはある/usr/share/nginx/html/_src/learn
シンボリックリンクを作成します。あなたcoding
に/usr/share/nginx/html
相対シンボリックリンク(理論)を作成します。
sudo ln -s /path/to/source/file-or-folder/relative/from/symlink /path/to/symlink/relative/to/current/location
実際の相対シンボリックリンクを作成します。
sudo ln -s ./_src/learn/coding ../../coding
詳細(同じ例)
current path: /usr/share/nginx/html/_src/learn
symlink(to be) relative to current path: ../../coding
symlink location (absolute): /usr/share/nginx/html/coding
folder/file relative to symlink location: ./_src/learn/coding
folder/file absolute path: /usr/share/nginx/html/_src/learn/coding