シンボリックリンクが独自に生成されるのを防ぐ方法は?

シンボリックリンクが独自に生成されるのを防ぐ方法は?

次のコマンドを実行すると、期待どおりに機能し、srcfromへのシンボリックリンクが生成されますinclude/bb

ln -sf ../src include/bb

srcただし、同じコマンドを再度呼び出すと、akaに追加のシンボリックリンクが生成されます。include/bbsrc/src

これを防ぐにはどうすればよいですか?


編集する:

明らかに、lnこれは2回呼び出されたときに発生し、セミコロンは最終的にそれとは何の関係もありません。

これを発生させる一連のコマンドは次のとおりです。

mkdir test
cd test
mkdir src
touch src/main.cpp
mkdir include
ln -sf ../src include/bb
ln -sf ../src include/bb

ベストアンサー1

ln -s ../src include/bb

include/bb../src参照(その場所に基づいて)という名前のリンクを作成するか、include/bb/src参照../src(その場所に基づいて)ファイルを生成します。後者include/bbは存在し、ディレクトリ(実際にまたはディレクトリへのリンク)の場合です。

したがって、コマンドを一度実行すると、ディレクトリであるディレクトリ対ディレクトリをinclude/bb指すsrcリンクが作成されます。したがって、次にコマンドを実行すると、名前付きの新しいリンクがディレクトリに追加されます。includeinclude/bbsrc

とは何の関係もありません;

使用しようとすることもできます。

ln -sTf ../src include/bb

代わりに(by -T)はln既存のファイルをinclude/bb通常のファイルとして処理するように指示し(ディレクトリを参照するリンクであっても)、(by -f)ファイルを強制的に置き換えます。

おすすめ記事