cp -fはcp -iエイリアスを上書きできません


8

/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ビットを使用しています。

回答:


9

一方で-f手段を強制するために、それらのすべてでcp、それは意味の宛先を更新することができない場合は、最初の目的地を削除しようとすることで力を

以下のためにmvrm-fちょうどオーバーライド-i。しかしcp、それはユーティリティの動作を変更し、その場合とは-f逆ではありません。意味があり、ターゲットが存在する場合はユーザーに尋ね、オーバーライドできない場合は最初に削除します。-icp -i -f

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

すでに述べたように、の影響を取り除くには-i、を追加する代わりに-f、提供されている解決策のいずれかを使用してエイリアスを無効にする必要があります。


「mvおよびcpの場合、-fは-iをオーバーライドするだけです。」あなたはmvとrmを意味すると思います。説明してくれてありがとう、私には今とてもはっきりしています!
baptx

11

を与えることcp -fにより、オプションは既存のオプションと単純に加算されます。

つまり、がある場合alias cp='cp -i'、コマンドcp -fでcpという単語が置き換えられるため、になりますcp -i -f file1 file2

エイリアスを上書きするには:

\cp -f file1 file2

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


投稿を間違えました。cp-rについて話したとき、cp -fを意味していましたが、修正されました。バックスラッシュを使用したソリューションが機能しています。ありがとうございます!しかし、私はまだバックスラッシュがmvまたはrmコマンドに必要でない理由を理解していません、エイリアスはmv -fおよびrm -fで直接無効にされています!
baptx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.