1.02.2標準
src/report.csvをdest/report.csvへコピーする。
コピー先が存在し、コピー元より新しい場合は上書きしない。
GNU cpで適切なコマンドはどれか。
× 不正解
cp -uはコピー先が存在しないか、コピー元の方が新しい場合にだけコピーする。
詳細解説
誤り
cp -f src/report.csv dest/report.csv必要なら既存のコピー先を削除して再試行し、時刻比較による上書き抑止をしない。
誤り。-fは上書きを進める方向の指定で、新しい宛先を保護する時刻条件を持たない。
誤り
cp -i src/report.csv dest/report.csv上書き前に対話確認するが、新旧だけで自動判断しない。
誤り。-iは人に確認を求めるため、新旧だけで自動的に判断する要件とは異なる。
誤り
cp -n src/report.csv dest/report.csvコピー先が存在すれば、新旧にかかわらず上書きしない。
誤り。-nは宛先が存在するだけで上書きせず、コピー元の方が新しい場合にも更新しない。
正しい
cp -u src/report.csv dest/report.csvコピー先がない場合、またはコピー元の方が新しい場合だけコピーする。
正しい。-uは宛先とコピー元の更新時刻を比較し、コピー元が新しいときだけ反映する。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); printf old >"$tmp/src"; sleep 1; printf newer >"$tmp/dst"; cp -u "$tmp/src" "$tmp/dst"; cat "$tmp/dst"; rm -rf "$tmp"期待される結果
newer理解のポイント
- -uは更新時だけ
- -nは存在時に上書きしない
- -iは対話確認
確認時の注意
- 確認環境: GNU coreutils 9.x / 一時ファイル
基礎のおさらい
上書き方針
-i、-n、-uはそれぞれ対話、存在、新旧比較という異なる判断基準を持つ。
同期との違い
cp -uは単方向の条件付きコピーであり、削除反映などを含む完全な同期ではない。
問題IDKL-101-393
確認環境GNU coreutils 9.x / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告