Ubuntuでディレクトリのシンボリックリンクを作成する[終了]


247

以下は、ディレクトリのシンボリックリンクを作成するための私のコードです:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

すでにディレクトリを作成してい/etc/nginxます。ソースディレクトリ(/usr/local/nginx/conf/)のコンテンツをターゲットディレクトリ(/etc/nginx)のコンテンツに含めたいだけです。しかし、コードを実行する/etc/nginxconf、の内容ではなく、というディレクトリが含まれていconfます。そのディレクトリには必要なコンテンツが含まれていますが、場所が間違っています。

なぜディレクトリのコンテンツをターゲットフォルダーに置くのではなく、ターゲットフォルダーにディレクトリを置くのですか?


ファイル(デフォルトのファイルブラウザ)を使用することもできます。リンクするフォルダを右クリックし、[リンクを作成]オプションを選択します。リンクされたフォルダが作成され、必要に応じて移動したり名前を変更したりできます。
John Linhart、2014年

4
Linux bind mount機能を使用します。
gkiko

回答:


254

これは、ln2番目の引数がディレクトリの場合の動作です。その中に最初の引数へのリンクを配置ます。/etc/nginxシンボリックリンクになりたい場合は、まずそのディレクトリを削除し、同じコマンドを実行する必要があります。



10
そのUnix.SEリンクはここで解決されます。循環依存関係があるようです。
カイザー2016

30

これlnは、ターゲットがすでに存在し、ディレクトリである場合にドキュメントに記載されていることです。あなたがしたい場合は/etc/nginxすることがシンボリックリンクではなく、含まれているシンボリックリンクを、あなたはより良い最初のディレクトリとして作成していませんでした!


51
あなたの答えは、すでに答えを知っている読者の文脈でのみ意味があります。質問する人には役に立たない
Ricardo Saporta 2013年

1
マウントされたUSBデバイスのルートへのシンボリックリンクを実際に作成できますか(このフォルダーを最初に消去することはできません)。
グリゴリーコルニーロフ2015年

1
@GrigoryKornilov は、存在しないものを含め、好きなもののシンボリックリンク作成できます。この質問は、シンボリックリンクが作成された場所に関するものでした(それが指す場所ではありません)。ファイルシステム内の特定のパス名は、通常のファイルか、ディレクトリか、シンボリックリンク(またはソケット、パイプ、またはデバイス)のいずれかです。それはできませんことより、同時にそれらのものの1以上(すなわち、あなたとまったく同じ名前を持つ複数の個別のファイルを持つことはできません)。
セラダ2015年

10

スクリプトでは次のような便利なものです:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

スクリプトを再実行した後、「悪い」ループのシンボリックリンクを再作成する前に防止します


1
優れた!これが正確な解決策です。すでに存在する場合は、ディレクトリを作成する必要はありません。ハードリンクしてブラックホール(/ dev / null)にシンクするのは本当に良い調整です
Cosmo Arun
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.