ターゲットがすでに存在するという事実を考慮して、/home/user/app/public
を/home/user/public_html
にリンクする適切な方法はありますか?
ln -s /home/user/app/public /home/user/public_html
を実行すると、/home/user/public_html/public
になります。
ln -s /home/user/public_html /home/user/app/public
などのアクションを逆にすることも可能だと思いますが、最終結果として/home/user/app/public/public_html
を回避する方法はわかりません。
Lemmeは問題を正しい方法で理解します
あなたのソースは/home/user/public_html
であり、そこにファイルがあると思います。そして、/home/user/app/public
でこのディレクトリへのリンクを作成したいとします。このようにして、ls /home/user/app/public
のようなことをして、/home/user/public_html
にあるファイルを見ることができます。
これが正しい場合、ソースは/home/user/public_html
で、ターゲットは/home/user/app/public
です。適切なコマンドは次のとおりです。
ln -s /home/user/public_html /home/user/app/public
/home/user/app/public
が有効なディレクトリまたはファイルではないことを確認してから、コマンドを入力してください。
あなたの質問を正しく理解していれば、既存のターゲットをどのように扱うかを知りたいと思っていました。その場合、2つのシナリオが考えられます。
1)既存のターゲットはファイルです。この場合、「-f」でシンボリックリンクの作成を強制できます
2)既存のターゲットはディレクトリです。この場合、lnコマンドの現在の実装に依存します。 couldには「-n」引数があります。これにより、ディレクトリへのシンボリックリンクが、あなたが言うように複製するのではなく、適切に処理されます。
参照: https://unix.stackexchange.com/questions/207294/create-symlink-overwrite-if-one-exists