web-dev-qa-db-ja.com

ln -sのターゲットはフルパスである必要がありますか?

ディレクトリ~/downloadlnを次のように呼び出そうとしました。

ln -s ./abc ~/abc [EDITED]

しかし、それは機能しません。
自宅でls -alを実行すると、abcのリンクが間違ってしまいます。

ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)

だからここでの私の質問は:lnはターゲットのフルパスを必要としますか? manページにドキュメントやヒントが見つかりませんでした。もしそうなら、どこで詳細情報を入手できますか。

4
fangzhzh

非常に簡単です。~そのディレクトリ内を指すシンボリックリンクを./abcに作成します。シンボリックリンクのパス名は、それが存在するディレクトリのコンテキストで有効である必要があります¹。 現在は現在ディレクトリにあるファイルを実際にポイントする場合は、フルパスを使用する必要があります。


  1. リンクを使用する場合は、リンクが有効である必要があります。何もないか、存在しないファイルを指している可能性があります。ファイルは以前に存在していた可能性があり、いつでも再表示される可能性があるため、これは良いことです。シンボリックリンクはそのファイルを再び指します。
5
MPi

lnは、絶対パス名または相対パス名のいずれかを取ることができます。シンボリックリンクでは違いが重要ですが、ハードリンクを作成するように要求したため、どちらの方法でも同じファイルに解決されます。

ls -liおよび~/abc~/download/abc出力を確認してください。リンク数が2であり、iノード番号が両方のファイルで同じであることがわかります。

2
sarnold