言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. cp / mv / rm

cp / mv / rm

対応: 全Linux
macOS(2001 Cheetah)
Bash 1.0(1989)

『cp』はファイルやディレクトリのコピー、『mv』は移動またはリネーム、『rm』は削除を行うコマンドです。ファイル操作の基本として頻繁に使用します。

構文

cp [オプション] コピー元 コピー先
mv [オプション] 移動元 移動先
rm [オプション] ファイル...

オプション一覧

コマンド / オプション概要
cp ファイル コピー先ファイルを指定した場所にコピーします。
cp -r ディレクトリ コピー先ディレクトリを再帰的にコピーします。
cp -p ファイル コピー先パーミッション・タイムスタンプなどの属性を保持してコピーします。
cp -i ファイル コピー先上書き前に確認プロンプトを表示します。
cp -u ファイル コピー先コピー先より新しいファイルだけコピーします。
mv ファイル 移動先ファイルを移動します。移動先が同じディレクトリならリネームになります。
mv -i ファイル 移動先上書き前に確認プロンプトを表示します。
rm ファイルファイルを削除します。
rm -r ディレクトリディレクトリを再帰的に削除します。
rm -f ファイル確認なしで強制削除します。存在しないファイルもエラーにしません。
rm -rf ディレクトリディレクトリを強制的に再帰削除します。取り消しできないため十分注意してください。
rm -i ファイル削除前に確認プロンプトを表示します。

サンプルコード

以下のディレクトリ構造を例に説明します。

📁 ~/project/ 📁 src/ 📄 index.html 📄 style.css 📁 archives/ 📄 file.txt

ファイルをコピーします。

cp file.txt backup.txt
ls
archives  backup.txt  file.txt  src

ディレクトリをまるごとコピーします。『-r』オプションが必要です。

cp -r src/ src_backup/
ls
archives  backup.txt  file.txt  src  src_backup

属性を保持してコピーします(バックアップなどに使います)。

cp -rp src/ backup/

ファイルを別のディレクトリに移動します。

mv file.txt archives/
ls
archives  backup.txt  src  src_backup

ファイルをリネームします(同じディレクトリ内での移動)。

mv backup.txt old_backup.txt
ls
archives  old_backup.txt  src  src_backup

ファイルを削除します。

rm old_backup.txt
ls
archives  src  src_backup

ワイルドカードで拡張子ごと削除します。

rm *.log

ディレクトリを中身ごと強制削除します。

rm -rf src_backup/
ls
archives  src

よくあるミス

よくあるミス1: rm -rf で変数が空のときルートを削除してしまう

変数が空の状態で『rm -rf $DIR/』を実行すると、『rm -rf /』と解釈されます。

DIR=""
rm -rf "$DIR/"
($DIR が空なら rm -rf "/" が実行される危険)

変数が空でないことを確認してから実行するか、set -u(未定義変数でエラー)を使います。

#!/bin/bash
set -u
DIR="/tmp/myapp"
rm -rf "$DIR/"

よくあるミス2: cp でディレクトリを -r なしでコピーしようとする

ディレクトリを cp でコピーするとき、『-r』オプションを付けないとエラーになります。

cp src/ backup/
cp: src/ is a directory (not copied)

ディレクトリのコピーには必ず『-r』(または『-R』)を付けます。

cp -r src/ backup/

概要

$ rm -rf』は確認なしにディレクトリを丸ごと削除するため、パスを間違えると重大な事故につながります。特に変数を含むパス(例:『$ rm -rf $DIR/』)を使う場合、変数が空のときに予期しない動作にならないよう、ダブルクォートで囲む(『"$DIR"』)か、変数の中身を確認してから実行します。

ファイルの詳細情報確認には『ls』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。