質問が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 command
。man 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
答え2
By default, each destination (name of new link) should not already exist.
[...]
--backup[=CONTROL]
make a backup of each existing destination file
[...]
-f, --force
remove existing destination files
その意味を理解するには、慎重に読んでくださいman ln
。文脈がなければ、「削除」は少し誤解を招く。
あなたの質問に-i
:
ln: replace 'q2'? y
削除、上書き、交換...
POSIX( man 1p ln
) には以下が含まれます。
-f
Force existing destination pathnames to be removed to allow the link.
これは「...リンクを許可する」のための非常に良いアドオンです。
そしてinfo ln
:
通常、「ln」は既存のファイルを置き換えません。 "--force"("-f") オプションを使用してください。変える無条件に交換してください。 "--interactive"("-i") オプションは条件付きで置き換え、"--backup"("-b") オプションは条件付きで置き換えます。名前を変更するそれらを。
"--backup" 例: 既存の使用qli -> qqq
:
ln -sb ttt qli
09:10 qli -> ttt
08:47 qli~ -> qqq