シンボリックリンクの作成 - 存在する場合は上書き

シンボリックリンクの作成 - 存在する場合は上書き

データを取り出して/path/to/data/folder/month/date/hour/minute/fileシンボリックリンクし、/path/to/recent/fileファイルが作成されるたびに自動的にこれを実行したいと思います。

存在するかどうかを事前に知ることができないと仮定すると、どのように/path/to/recent/file作成(存在しない場合)または交換(存在する場合)するのですか?それが存在することを確認してから削除し、シンボリックリンクを実行できると確信していますが、私がしたいことを一段階で実行する簡単なコマンドがあるかどうか疑問に思います。

答え1

lnこれが「オプションの目的」です-f。リンクを作成する前に、既存のターゲットファイル(存在する場合)を削除します。

ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

/path/to/recent/fileへのシンボリックリンクを作成し、/path/to/data/folder/month/date/hour/minute/file必要に応じて既存のファイルまたはファイルへのシンボリックリンクを置き換えます(何もなければうまく機能します)。

ターゲット名にディレクトリまたはディレクトリへのシンボリックリンクがすでに存在する場合、そのディレクトリにシンボリックリンクが作成されます(したがって、上記/path/to/recent/file/fileの例では結果が表示されます)。-n一部のバージョンで利用可能なこのオプションは、lnディレクトリへのシンボリックリンクを処理し、必要に応じて置き換えます。

ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

POSIXln指定されていない-nため、通常は信頼できません。ほとんどのln動作は実装によって定義されるため、使用しているシステムの詳細を実際に確認する必要があります。使用する場合牛に似た一種の栄養ln-t、および-Tオプションを使用して、ディレクトリが存在するときの動作を完全に予測可能にすることもできます(つまり同じ名前の既存のディレクトリにリンクを作成する代わりに失敗します。

答え2

読んでください手動

ln -sfn /new/target /path/to/symlink

$人ln

-n、--no-dereference
LINK_NAMEがディレクトリへのシンボリックリンクの場合は、通常のファイルとして扱います。

関連情報