このトピックで説明されているコマンドを使用してファイルのバックアップコピーを作成しましたcp
(Linuxでファイルをコピーする場合は、ファイルがターゲットに存在する場合はコピーしないでください)。https://superuser.com/a/1377730/1008457
コマンドは次のとおりです。
while true; do echo n; done | cp -Ri /origin /destination 2>/dev/null
良い結果。しかし、コピープロセスにエラー(ハードドライブへの読み書きエラー)がないかどうかをどうやって確認できますか?シェル変数$?
aが十分であることを考慮すると、コピーして0
返すのに十分ですか?
答え1
cp
0
エラーが発生しない場合は終了ステータスが返され、そうでない場合は1
。はい。スクリプトでこの値をテストして、エラーが発生していないことを確認できます。
現在の標準エラーに対してDiscardコマンドを使用することもできます2>/dev/null
。このオプションを省略すると、すべてのエラーが端末に出力されます。これはstdout
とのデフォルトですstderr
。または、stderr
拡張子を使用してログファイルとしてキャプチャすることもできます2>path/to/log/file
。
しかも(クサロナンダがそうだったようにコメントしました。)を使用してコマンドを簡素化できます-n
。--no-clobber
これはターゲットを上書きしないことを意味します。
cp -Rn origin destination 2>log_file
後でスクリプトを入力すると、$?
成功をテストできます。
または、標準構文を使用できますif
。
if cp -Rn origin destination 2>log_file; then
echo "OK"
else
echo "Failed"
fi
または略語:
cp -Rn origin destination 2>log_file && echo "OK" || echo "Failed"
また、-a
(代わりに)逆参照リンクを実装しているので、バックアップ-R
に役立ちます(参照)。-Rd
man cp