ln -s(pwdに基づくパスを含む)

ln -s(pwdに基づくパスを含む)

複数のシンボリックリンクを作成しようとしていますが、これがなぜ機能するのかわかりません。

ln -s /Users/niels/something/foo ~/bin/foo_link

これ

cd /Users/niels/something
ln -s foo ~/bin/foo_link

いいえ。

foo_link/Users/niels/bin私はこれがfooではなくfooに接続することに関連していると思います。/Users/niels/something

問題は、実際に入力せずに絶対パスを指すシンボリックリンクを作成する方法です。

ちなみに私はMac OS X 10.9とZshを使っています。

ベストアンサー1

フルパス文字列を入力せずに絶対パスを使用して現在のディレクトリに接続する最も簡単な方法は次のとおりです。

ln -s "$(pwd)/foo" ~/bin/foo_link

target(最初の)引数は、ln -s現在のディレクトリではなくシンボリックリンクの場所に基づいています。デフォルトでは、生成されたシンボリックリンク(2番目の引数)は保存のみを行うことを理解するのに役立ちます。テキスト最初のパラメータを提供します。

したがって、次のようにします。

cd some_directory
ln -s foo foo_link

それからリンクを動かす

mv foo_link ../some_other_directory
ls -l ../some_other_directory

あなたは見るでしょうfoo_link 努力するfooそのディレクトリがあるディレクトリを指します。これは相対パスを指すシンボリックリンクにも当てはまります。以下を行う場合:

ln -s ../foo yet_another_link

その後、yet_another_link別のディレクトリに移動してそれが指している場所を確認すると、常に指していることがわかります../foo。これは、シンボリックリンクがさまざまな絶対パスに存在する可能性があるディレクトリ構造の一部である可能性があるため、予想される動作です。

あなたの場合、次のように入力してリンクを作成するとき

ln -s foo ~/bin/foo_link

foo_linkfooその場所に関連するリンクのみが保持されます。$(pwd)ターゲットパラメータ名の前に付けると、現在の作業ディレクトリに絶対パスが追加されるため、絶対ターゲットとしてリンクが生成されます。

おすすめ記事