ターゲットが存在する場合は、cpにエラー値を返します。

ターゲットが存在する場合は、cpにエラー値を返します。

cpターゲットファイルがすでに存在する場合(LinuxのGNU coreutilsで)ゼロ以外の値を返す方法はありますか?
それとも、この機能を提供する一般的に使用される他の小さなユーティリティはありますか?

これは、シェルスクリプトで誤って何も失うことなく、ユーザーの対話なしでファイルを自動的にコピーするのに役立ちます。コピーをオリジナルと比較すると同様の結果が得られますが、より簡単な解決策があることを願っています。

ベストアンサー1

一部のcp実装(GNUを含む)には、ファイルが存在する場合にファイルを破壊しないcp非標準スイッチがあります。-nしかし、GNUはcpとにかく戻ります。0

シェルスクリプトでは、ifステートメントを使用してファイルの内容をコピーする前にファイルが存在するかどうかをテストできます。

if [ -e /path/to/file ]
  then 
   exit 1
  else
   cp file /path/to/file
fi

または、機能が必要な場合は、次のように使用できます。

function cpa(){ 
 if [ -e "$2" ]
  then 
   exit 1
  else 
   /bin/cp "$1" "$2"
  fi 
}

おすすめ記事