ランタイム(他のLinux Ubuntuバージョン):
>ln -s dir_1 symlink_dir
>ln -s dir_2 symlink_dir
失敗したと言わずに失敗します。ただし、ファイルに対して同じ操作を実行するか、オプションにvを追加すると、失敗したというメッセージが表示されます。
>ln -s file_1 symlinkg_file
>ln -s file_2 symlinkg_file
または
>ln -sv dir_1 symlink_dir
>ln -sv dir_2 symlink_dir
エラーメッセージで失敗します。
ln: failed to create symbolic link
これは私にとって非常に奇妙な行動のように見えますか?理由がありますか?
答え1
2回目のプロセスではln
失敗しないので
symlink_dir/dir_2 -> dir_2
シンボリックリンク
何かを作る:
ls -l symlink_dir/dir_2
そこに(おそらく壊れた)シンボリックリンクが表示されます。
ln
これは、ターゲットがディレクトリ(またはディレクトリへのシンボリックリンク)の場合に機能する方法です。
3番目のジョブはすでに内部ジョブ(別名)を持っているln
ため失敗する可能性があります。dir_2
symlink_dir
dir_2
答え2
必要に応じて2番目のコマンドが失敗する-n
ことを指定します。ln
$ ln -ns realdir symdir
$ ln -ns realdir symdir
ln: creating symbolic link `symdir' to `realdir': File exists
もちろん、これは-v
結果とは何の関係もありません。
答え3
オプションを使用すると、何が起こっているのかを確認し、ln
必要な動作を実装できます。次のエイリアスを使用してくださいln
。
alias ln='\ln -vsn'
ln
オプション:
-v, --verbose
print name of each linked file
-s, --symbolic
make symbolic links instead of hard links
-n, --no-dereference
treat destination that is a symlink to a directory as if it were a normal file