cp -fはcp -iエイリアスをオーバーライドできません。

cp -fはcp -iエイリアスをオーバーライドできません。

私の/home/user/.bashrcファイルには、エラーを防ぐために次のエイリアスがあります。

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

私がやっていることが確実であれば、エイリアスを使用または上書きすることができ、rmファイルmvを本当に上書きするかどうか尋ねません。rm -fmv -f

問題は命令が機能しないことですが、cp使用中はcp -f何度も質問が出ます。

これは普通ですか?デフォルトでは、エイリアスを使用し、コマンドもcp -i使用できるようにするにはどうすればよいですか?cp -f

私はDebian Wheezy 64ビットを使用しています。

答え1

を与えることで、cp -fそのオプションは既存のオプションに単に追加されます。

つまり、 があるとalias cp='cp -i'コマンドの cp 単語が置き換えられ、 を得ることにcp -fなりますcp -i -f file1 file2

エイリアスをオーバーライドするには:

\cp -f file1 file2

コマンドの前のバックスラッシュはエイリアシングを無効にします。読みやすくするcommand cpために代替を使用できます\cp

答え2

たとえ-fそれが意味するバイこれらすべてについて、cpこれは次のことを意味します。ターゲットを更新できない場合は、まずターゲットを削除して強制してみてください。

mvとの場合rm-f上書きしてください-i。しかし、その場合はcpユーティリティの動作を変更するものであり、-fこの場合にはその逆ではありません。-icp -i -fこれは意味があり、次のことを意味します。ユーザーにターゲットが存在するかどうかを尋ね、上書きできない場合は最初に削除してください。

mvとの場合でも、rmユーザーに送信される警告とエラーメッセージの場合、追加するものと削除する-fことは異なります。-iたとえば、エラーはrm non-existent-file報告されますが、エラーrm -i -f non-existent-fileは報告されません。

-i前述のように、エフェクトを削除するには、エイリアスを追加するのではなく、エイリアスを無効にするために提供されたソリューションを使用する必要があります。-f

関連情報