web-dev-qa-db-ja.com

ルートへのシンボリックリンクを作成する方法

ホームディレクトリのルート(/)フォルダーへのシンボリックリンクを作成します。ただし、これを試してみると、

~$ ln -s /
ln: failed to create symbolic link './': File exists

Nautilusを使用してこれを行うことができます Ctrl+D、もちろん、私はそれが可能であることを知っています。

ターミナルを使用してこれを行う方法は?

13
Ankur S

リンクの名前が欠落しています。次のようになります。

cd ~
ln -s / root

これにより、ルートと呼ばれるシンボリックリンクがホームディレクトリに作成されます。したがって、正しい使用法は次のとおりです。

ln -s <target> <link-name>

表示されるエラーメッセージは、./が常に存在し、この名前でリンクを作成できないことです。最良の方法は lnコマンド を使用することです2 両方のパラメータを使用して、誤ったリンクを防ぎます。

man ln から:

概要

(1st form) ln [OPTION]... [-T] TARGET LINK_NAME  
(2nd form) ln [OPTION]... TARGET  
(3rd form) ln [OPTION]... TARGET... DIRECTORY  
(4th form) ln [OPTION]... -t DIRECTORY TARGET...  

説明

最初のフォームで、TARGETへのリンクを名前LINK_NAMEで作成します。 2番目のフォームで、現在のディレクトリにTARGETへのリンクを作成します。 3番目と4番目のフォームでは、TARGETの各DIRECTORYへのリンクを作成します。デフォルトでハードリンクを作成します。シンボリックリンクは--symbolicで。デフォルトでは、各宛先(新しいリンクの名前)が既に存在していてはなりません4。ハードリンクを作成する場合、各TARGETが存在する必要があります。シンボリックリンクは任意のテキストを保持できます。後で解決される場合、相対リンクはその親ディレクトリに関連して解釈されます。

長いオプションの必須引数は、短いオプションにも必須です。

OPTIONS

最後のパラメーター<link-name>は、デフォルトでターゲットの最後の部分になります。そのため、ターゲットが/path/dirの場合、指定されない場合、リンク名はデフォルトでdirになります。1 また、たとえば~/etcmkdir ~/etcを作成し、ln -s /etc~を実行すると、名前/ディレクトリが既に存在するため、リンクを作成できません。3

そして、あなたはあなたのホームディレクトリに作成されたリンクを見ることができます(ここでは例として、もちろんあなたは好きな名前を自由に付けることができます):

$ ls -l ~/root
lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /

1@ thomasrutter に感謝します。
2man link および man symlink も参照してください
3コメントで例を提供してくれた @ steeldriver に感謝します。
4質問に関連しているため、テキストを指摘するために強調された部分。

17
Videonauth