cp
コマンドを使用して上書きを強制しようとしています。
私はcp -rf /foo/* /bar
を試しました、しかし私はまだそれぞれの上書きを確認するよう促されます。
あなたはyes | cp -rf xxx yyy
をすることができます、しかし私の愚痴はあなたがそれをルートとしてするなら - あなたの.bashrc
または.profile
がcp
からcp -i
へのエイリアスを持っていると言います。
既存のエイリアスを確認するには、コマンドプロンプトでalias
を実行するか、cp
についてのみエイリアスを確認するにはwhich cp
を使用します。
エイリアスが定義されている場合、unalias cp
を実行すると現在のセッションのエイリアスが廃止されます。それ以外の場合は、シェルプロファイルから削除するだけで済みます。
一時的にエイリアスを迂回して、エイリアスのないバージョンのコマンドに\
という接頭辞を付けることで使用できます。 \cp whatever
これはおそらくcp
がすでにcp -i
のようなものにエイリアスされていることが原因です。 cp
を直接呼び出すことでうまくいくはずです。
/bin/cp -rf /zzz/zzz/* /xxx/xxx
これを回避する別の方法はyes
コマンドを使用することです。
yes | cp -rf /zzz/zzz/* /xxx/xxx
他の答えのいくつかが述べたように、あなたはおそらくどこかでcp
をcp -i
または類似のものにマッピングするエイリアスを使うでしょう。コマンドの前に円記号を付けることで、別名を付けずにコマンドを実行できます。あなたの場合は、試してみてください
\cp -r /zzz/zzz/* /xxx/xxx
バックスラッシュはあなたがcp
と呼ぶエイリアスを一時的に無効にします。
cp
をcp -i
にマッピングするエイリアスがおそらくどこかにあります。デフォルト設定では、cp
は上書きを要求しないためです。あなたの.bashrc
、あなたの.profile
などをチェックしてください。
cp manpage :を参照してください。-i
パラメータが指定されている場合のみ、実際にcp
が上書きの前に確認を求めます。
これはalias
コマンドで確認できます。
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
別名を未定義にするには、次のようにします。
$ unalias cp
他の答えが述べているように、これはcp
がcp -i
の別名である場合に起こり得る。
cp
コマンドの前に\
を追加して、別名なしで使用することができます。
\cp -fR source target
デフォルトでcp
はcp -i
へのエイリアスを持ちます。 alias
と入力して確認できます。
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
この問題を解決するには、代わりに/bin/cp /from /to
コマンドを使用してください。cp /from /to
cp
は通常このようにエイリアスされています
alias cp='cp -i' # i.e. ask questions of overwriting
上書きしてもよいと確信している場合は、これを使用します。
/bin/cp <arguments here> src dest
cp -u ...
cp --update ...
また働きます。
このコマンドも使えます:
cp -ru /zzz/zzz/* /xxx/xxx
それはあなたの既存のファイルを新しいもので更新するでしょう。
別名なしでコマンドを呼び出すもう1つの方法は、bashに組み込まれているcommand
を使用することです。
command cp -rf /zzz/zzz/*
私はこれを見つけました
'cp' -rf * /data/danalonso_testing/target/
エイリアスをそのままグローバルレベルに保ちたいがスクリプトだけを変更したい場合。
ただ使用してください:
エイリアスcp = cp
その後、フォローアップコマンドを書きます。
-nは「上書きしない」ことですが、彼の質問はあなたが答えたこととはまったく反対です。
この確認を避けるために、あなたは単に絶対パスでcpコマンドを実行することができます、それは別名を避けます。
/bin/cpソースファイルの保存先
私は単にunaliasを使って "cp -i"エイリアスを削除し、それからコピーをしてからエイリアスを元に戻します。 :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
最も美しいコードではありませんが、設定が簡単で効率的です。私はまた、エイリアスがすでに単純に戻って設定されていることを確認してください
alias |grep cp