web-dev-qa-db-ja.com

cpを停止する方法: './xxx'を上書きしますか?促す

Cpコマンドによる上書きのプロンプトを停止するにはどうすればよいですか。端末に戻らなくても、すべてのファイルを上書きしたい。これらは大きなファイルであり、完了するまでに少し時間がかかります。

-fオプションを使用してみました。それでも、上書きするかどうか尋ねられます。

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite `./somefilesxxx'? y
19
nelaaro

/bin/cpの呼び出しに加えて、次のいずれかを実行できます。

\cp -f ...
command cp -f ...

ただし、cp -irm -iのようなエイリアスを使用することに慣れるべきではないことに同意します。別のシェルに座っていると、依存するようになったセーフティネットはありません。オン。

17
glenn jackman

このソリューションを見た後。 bashesエイリアス機能が問題の原因であることがわかりました。 http://systembash.com/content/Prompt-to-confirm-copy-even-with-cp-f/

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

彼はお勧めします

unalias cp

エイリアスを保持したいのですが、このインスタンスに適用したくないだけです。私の解決策は、完全パスでバイナリを使用することです。これにより、bashesエイリアス関数が引き継がないようにします。それはかなりうまくいきます。

/bin/cp -f /media/somedir/somefiles* .  
13
nelaaro

Linuxでは残念ながら、copy "cp"コマンドにはこの質問に "y"または "n"の回答で自動的に回答するオプションがありません。何をしたいかによって、この問題の解決策は複数あります。 1つの解決策は、Unixの「yes」コマンドを使用することです。このコマンドは、強制終了されるまで文字列を繰り返し出力します。

宛先ディレクトリ内のすべてのファイルを上書きする場合は、「yes」コマンドを使用してすべての質問に「y」で答えることができます。 「y」はデフォルト値であるため、指定する必要はありません。

yes | cp source/*.txt destination/.

宛先ディレクトリ内のファイルの上書きを避けたい場合は、「yes」コマンドを使用して、「n」を付けずにすべての質問に答えることができます。

yes n | cp source/*.txt destination/.

「yes」コマンドの詳細については、「man yes」を使用してください。

4
Michael Sundell