
複数のシンボリックリンクを作成しようとしていますが、これがなぜ機能するのかわかりません。
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_link
foo
その場所に関連するリンクのみが保持されます。$(pwd)
ターゲットパラメータ名の前に付けると、現在の作業ディレクトリに絶対パスが追加されるため、絶対ターゲットとしてリンクが生成されます。
答え2
-r
()フラグを使用すると、--relative
これが行われます。
ln -sr foo ~/bin/foo_link
答え3
入力を保存するには:
ln -s "$PWD"/foo ~/bin/foo_link
答え4
どうですか?
$ cd /Users/niels/something
$ ln -s ./foo ~/bin/foo_link