シンボリックリンクを作成したい
~/.pm2/logs -> /opt/myapp/log
私が走るとき
ln -sFf /opt/myapp/log ~/.pm2/logs
シンボリックリンクを取得します
~/.pm2/logs/log -> /opt/myapp/log
これは私が望むものではありません。
できれば、POSIX互換のソリューションをお勧めします。
~/.pm2/logs
にはすでにディレクトリがあります。そのディレクトリが存在するので、その中にシンボリックリンクが置かれます。
~/.pm2/logs
をディレクトリではなくシンボリックリンクにしたい場合は、まず既存のディレクトリを削除するか、名前を変更する必要があります。
他の回答が言うように、すでにそこにディレクトリがあります。
これを回避し、代わりにエラーメッセージを表示するには、-T
オプションを使用します。残念ながら、これはPosix(GNU)ではないと思います。
Gnu ln
マニュアルから(cpとmvも同じ)。
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
-T
のないフォーム1は、フォーム3とあいまいです(両方に2つの引数があります)。
Posixでは、フォーム名3のディレクトリ名の最後に/
を置くことで、このあいまいさをなくすことができますが、他の方法でできることはないと思います。これが、Gnuが-T
オプションを追加した理由です。
最初に〜/ .pm2/logsディレクトリを削除します。ターゲットは既存のディレクトリであるため、リンクはその中に作成されます。