デフォルトの動作がすでにファイルをオーバーライドしている場合、mv -fのポイントは何ですか?

デフォルトの動作がすでにファイルをオーバーライドしている場合、mv -fのポイントは何ですか?

これGNU Coreutils マニュアルmv説明する:

-f --force Do not prompt the user before removing a destination file.

ただし、これは既定の動作に設定されているため、mvこの-fオプションは重複しているようです。たとえば、GNU Bashバージョン4.3.11では、次のようになります。

$ ls -l
total 0
$ touch 1 2; mv -f 1 2; ls
2
$ touch 1 2; mv 1 2; ls
2

このフラグの意図が を-fオーバーライドするものではないようですalias mv="mv -i"いくつかの標準的な方法エイリアスをオーバーライドすると(使用するなど\mv)、この操作はコマンド全体でより簡潔で一貫した方法で実行できます。

マニュアルには「複数の -i、-f、-n オプションを指定すると最後のオプションのみ適用されます」と明示されていますが、フラグを使用するだけでも一般的にフラグをオーバーライドする意図では-fないようです。を使用するよりも簡潔で理解しやすい-i同等の動作を達成します。mvmv -if

それでは、-f旗の目的は何ですか?なぜ存在するのですか?

ベストアンサー1

の使用法は、以下の-f項目でより明確に説明されています。マニュアルページ-f4BSD以降とオプションが追加されました-i

もしファイル2すでに存在し、以前に削除されました。ファイル1触れた。もしファイル2書き込み禁止モードがあります。 mvはモードを印刷し、標準入力を読み取って行を取得します。行がyで始まると移動が発生し、そうでなければmvは終了します。

オプション:

-i対話型モードを示します。移動によって既存のファイルが置き換えられるたびに、ユーザーにファイル名の入力を求められ、その後に疑問符が表示されます。彼が「y」で始まる行に応答すると、移動は続行されます。別の回答をすると移動は発生しません。

-f力を表します。このオプションは、すべてのモード制限または-iスイッチを無視します。

mvの仕組みのより正確な定義は次のとおりです。POSIX規格-f後でコマンドラインに表示される場合にのみ上書きされます。-i

したがって、デフォルトの動作は同じです-f。デフォルトでは、宛先に書き込めない場合にのみ確認が要求されます。 (この動作は少なくともV4mvオプションは使用されません。 )-iオプションが与えられると、mv はターゲットが存在する限り追加の確認を要求します。この-fオプションは両方の場合で要求を無効にします(すべての後に発生する場合-i)。

おすすめ記事