Linuxで "ln -sf"を使用するのはなぜですか?

Linuxで

質問が2つあります。 1つ目は-sfオプション用で、2つ目は-fオプションをより具体的に使用するためのものです。

ln-sインターネット検索でコマンド、オプション、およびの説明を見つけました-f

(からコピーhttp://linux.about.com/od/commands/l/blcmdl1_ln.htm)

-s, --symbolic : make symbolic links instead of hard links
-f, --force : remove existing destination files

私はこれらのオプションを個別に理解しています。しかし、このオプション-s-fオプションを同時にどのように使用できますか?-sリンクされたファイルを生成するために使用され、リンクされたファイルを削除するために-f使用されます。このマージオプションを使用するのはなぜですか?

lnコマンドの詳細を理解するために、いくつかの例を挙げました。

$ touch foo     # create sample file
$ ln -s foo bar # make link to file
$ vim bar       # check how link file works: foo file opened
$ ln -f bar     # remove link file 

次のコマンドまですべてがうまく機能します。

$ ln -s foo foobar
$ ln -f foo     # remove original file

オプションの説明によると、-f最後のコマンドは機能しないはずです。foo削除されました。

なぜこれが起こるのですか?

ベストアンサー1

まず、コマンドオプションの機能を確認するには、を使用しますman commandman ln

   -f, --force
          remove existing destination files

   -s, --symbolic
          make symbolic links instead of hard links

今、-sあなたが言ったように、リンクを難しくないように象徴的にしてください。ただし、-fリンクは削除されません。ターゲットファイルが存在する場合は、そのファイルを上書きします。表示するには:

 $ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Mar 26 13:18 bar
-rw-r--r-- 1 terdon terdon 0 Mar 26 13:18 foo

$ ln -s foo bar  ## fails because the target exists
ln: failed to create symbolic link ‘bar’: File exists

$ ln -sf foo bar   ## Works because bar is removed and replaced with the link
$ ls -l
total 0
lrwxrwxrwx 1 terdon terdon 3 Mar 26 13:19 bar -> foo
-rw-r--r-- 1 terdon terdon 0 Mar 26 13:18 foo

おすすめ記事