cp/mv/rm/mkdir/rmdir|LinuC 1.02.2 基本ファイル操作ガイド
この記事は LinuC Level1 副主題 1.02.2「基本的なファイル管理の実行」のうち、コピー・移動・削除・ディレクトリ作成/削除に関わる cp・mv・rm・mkdir・rmdir を扱います。試験で問われるのは日常利用ではあまり意識しない オプション記号の弁別と 上書き時のデフォルト動作です。必要な知識だけに絞ってまとめました。
📚 LinuC Level1 完全攻略マップ(全39サブ項目)へ戻る
目次
- この記事でできるようになること
cp:コピー(-r/-R/-a/-p/-i/-f)mv:移動・リネーム(-i/-f)mkdir:ディレクトリ作成(-p/-m)rmdir:空ディレクトリ削除(-p)rm:削除(-r/-f/-i/-rf/-ri)- よくある質問(FAQ)
- まとめ
- 模擬問題にチャレンジ(ランダム出題)
1. この記事でできるようになること
LinuC 1.02.2 の出題範囲のうち、本記事で押さえる要点:
- ✅
cp/mv/rm/mkdir/rmdirがそれぞれ何をするコマンドか - ✅
cp -r/-R/-aの違いと、ディレクトリコピーでは再帰指定が必須になる点 - ✅
-i(確認)/-f(強制)/-p(属性保持)の弁別 - ✅
mkdir -p(親ごと作成)/mkdir -m(モード指定) - ✅
rmdirとrm -rの使い分け、rmdir -pの挙動 - ✅
rm -r/-rf/-riの順序・分割指定が等価であること
※ ls/touch/file/ワイルドカードは lsコマンドの記事、tar/gzip/bzip2/xz/dd は アーカイブ・圧縮の記事で扱います。
2. cp:コピー(-r/-R/-a/-p/-i/-f)
cp はファイルやディレクトリをコピーする標準コマンドです。書式は cp コピー元 コピー先。Linux には copy というコマンドは存在しないので、選択肢に出てきたら誤りです。
# 単一ファイルのコピー
$ cp src.txt dst.txt
# コピー先にディレクトリを指定すると、その配下に同名で配置
$ cp src.txt /tmp/
# 複数ファイルを1つのディレクトリへ(最後の引数はディレクトリ必須)
$ cp a.txt b.txt c.txt /tmp/
2-1. ディレクトリのコピーには -r/-R/-a のいずれかが必要
cp はオプションなしではディレクトリをコピーできません。ディレクトリ配下ごとコピーするには再帰指定が必要です。
# これはエラー
$ cp dir1 dir2
cp: -r not specified; omitting directory 'dir1'
# -r(または -R / -a)を付けると再帰コピー
$ cp -r dir1 dir2 # dir2 が無ければ新規作成される
| オプション | 意味 | 違いの要点 |
|---|---|---|
-r |
再帰コピー | 最も一般的 |
-R |
再帰コピー | -r とほぼ等価(POSIX 規格で挙動が厳密) |
-a |
アーカイブモード | -dR --preserve=all 相当。リンクや属性も含めて完全コピー |
試験で「ディレクトリを配下ごとコピーする適切なオプションをすべて選べ」と問われたら、-r・-R・-a の3つが正解です。-d は -a を構成する要素の1つ(シンボリックリンクをそのまま複製)、-s はそもそも cp でシンボリックリンクを作るオプションで別物です。
2-2. 属性を保持してコピーする -p/-a
オプションなしで cp を実行すると、コピー先のパーミッション・所有者・タイムスタンプは実行ユーザの umask などに従って新規に決まります。元の属性をそのまま残したいなら -p(preserve)を付けます。
| オプション | 保持される属性 |
|---|---|
-p |
mode(パーミッション)・ownership(所有者・グループ)・timestamps(アクセス/修正時刻) |
-a |
-p に加えて、再帰・シンボリックリンク・特殊ファイルまで含めてほぼ完全に維持 |
「属性を保持するオプションは?」と問われれば -p、「もっとも完全に保持する方法は?」なら -a と覚えます。
2-3. 上書きの挙動:-i/-f/-n/-u
| オプション | 動作 |
|---|---|
-i |
既存ファイルを上書きする前に確認プロンプトを表示 |
-f |
書き込めない既存ファイルを削除してからコピー。確認も抑制 |
-n |
既存ファイルがあれば上書きしない |
-u |
コピー元が新しい時だけ上書き(update) |
-v |
コピーしたファイル名を逐一表示(verbose) |
押さえどころは -i と -f が真逆の動作という点。-f は権限上コピー不可な既存ファイルを消してから書き込みに行くので、「上書きできない時に対応したい」ケースでは -f が正解になります。
alias cp='cp -i'多くのディストリで
cp は cp -i のエイリアスになっています。-f を付けても確認プロンプトが残ることがあり、確実に上書きしたいときは /bin/cp とフルパスで呼ぶか、\cp のようにエスケープしてエイリアスを回避します。
3. mv:移動・リネーム(-i/-f)
mv はファイルやディレクトリの移動とリネーム(改名)を兼ねたコマンドです。cp と違ってディレクトリが相手でも -r は不要です。
# リネーム
$ mv old.txt new.txt
# 別ディレクトリへ移動
$ mv file.txt /tmp/
# ディレクトリ自体の移動/改名も -r なしでよい
$ mv oldir/ newdir/
# 同じファイルシステム内ならメタデータ更新だけで一瞬
# 別ファイルシステムをまたぐと実質「cp → rm」で物理コピー+削除
| オプション | 動作 |
|---|---|
-i |
上書き前に確認プロンプトを表示 |
-f |
確認なしで強制上書き(デフォルトに近い動作) |
-n |
既存ファイルがあれば上書きしない |
-u |
移動元が新しい時だけ上書き |
mv で覚えるべきオプションは実質 -i と -f の対比です。「tmp/* を doc/ に移動し、同名があれば確認なしで上書き」という設問は mv -f tmp/* doc が正解。-i は確認、-n は上書きしない動作なので要件に合いません。
4. mkdir:ディレクトリ作成(-p/-m)
mkdir はディレクトリを作成するコマンドです。試験では -p と -m の2つが頻出です。
4-1. -p:中間ディレクトリも一括作成
作りたいディレクトリの親が存在しないとデフォルトではエラーになります。-p(parents)を付けると親も一緒に作成し、既に存在してもエラーにしません。
# dir1 が存在しないとエラー
$ mkdir dir1/dir2
mkdir: cannot create directory 'dir1/dir2': No such file or directory
# -p なら dir1 も同時に作る。既にあってもOK
$ mkdir -p dir1/dir2
# 2回目以降もエラーにならない(冪等)
$ mkdir -p dir1/dir2
4-2. -m:作成と同時にパーミッションを指定
mkdir dir の後に chmod する2ステップは間に umask の影響を受けますが、-m モードなら作成時に直接指定できるため確実です。
# 700 のディレクトリを一発で作成
$ mkdir -m 700 dir
# 2ステップでも同じ結果(umaskの影響に注意)
$ mkdir dir && chmod 700 dir
| オプション | 意味 |
|---|---|
-p |
中間ディレクトリも作成。既存でもエラーにしない |
-m MODE |
作成時のパーミッションを指定 |
-v |
作成したディレクトリ名を表示 |
5. rmdir:空ディレクトリ削除(-p)
rmdir は中身が空のディレクトリだけを削除します。ファイルが1つでも残っていればエラーになる、安全装置付きのコマンドです。
$ rmdir empty/ # 成功
$ rmdir hasfile/ # 失敗
rmdir: failed to remove 'hasfile/': Directory not empty
# -p は親ディレクトリも辿って連鎖削除(すべて空の時のみ)
$ rmdir -p dir/dir2 # dir/dir2 → dir の順で削除
| 状況 | 使うコマンド |
|---|---|
| 空ディレクトリだけを削除したい | rmdir |
| 中身があるディレクトリを丸ごと削除したい | rm -r(必要に応じて -f) |
| 親ディレクトリも一緒に削除したい(全部空) | rmdir -p |
試験では rmdir -r や rmdir -rf といった選択肢が出ますが、rmdir に -r や -f は存在しません。中身ごと消すのは rm -r 系の役割です。
6. rm:削除(-r/-f/-i/-rf/-ri)
rm(remove)は標準の削除コマンドです。ゴミ箱を経由せず即座に削除するため、一度消したファイルの復元は原則できません。
# ファイル削除
$ rm file.txt
# ディレクトリと中身をまとめて削除(-r 必須)
$ rm -r dir/
# 1件ずつ確認しながら削除
$ rm -i *.log
# 書き込み禁止でも強制削除、確認も抑制
$ rm -f tmpfile
# 再帰 × 強制(最も危険)
$ rm -rf /path/to/dir
6-1. オプション一覧
| オプション | 意味 |
|---|---|
-r / -R |
再帰的に削除。ディレクトリ削除では必須 |
-f |
確認プロンプトを抑制、書き込み禁止ファイルも削除、存在しなくてもエラーにしない |
-i |
削除前に1件ずつ確認 |
-v |
削除したファイル名を表示 |
6-2. 組み合わせと記述順
LinuC で頻出なのが「オプションの組み合わせ・順序・分割」のパターンです。rm のオプションは 順序も分割も自由で、結果は同じになります。
| やりたいこと | 等価な書き方(すべて正解) |
|---|---|
| 再帰 × 確認あり | rm -ri test / rm -ir test / rm -i -r test / rm -r -i test |
| 再帰 × 強制(確認なし) | rm -rf test / rm -fr test / rm -r -f test / rm -f -r test |
一方、rmdir -rf は存在しないので選択肢に出てきたら誤り、rm -f(-r なし)はファイル削除はできてもディレクトリは削除できない、という点をあわせて押さえましょう。
6-3. 中身があるディレクトリを消したい時の正解
次のような構造を丸ごと消すには rm -r(必要に応じて -f)を使います。
dir1/
dir1/file.txt
dir1/sub/
dir1/sub/nested.txt
# 丸ごと削除
$ rm -rf dir1
| 選択肢 | 結果 |
|---|---|
rm dir1 |
ディレクトリは削除不可(エラー) |
rmdir dir1 |
中身があるのでエラー |
rm -r dir1/* |
配下は消えるが 空の dir1 自体が残る |
rmdir -p dir1 |
空ではないのでエラー |
rm -rf dir1 |
✅ 配下含めて丸ごと削除 |
rm -rf $VAR/ のように変数を使う場合、変数が空だと rm -rf / に展開される事故が起きます。実運用では ${VAR:?} で未定義時に失敗させる、実行前に ls で対象を確認する、などの習慣が有効です。
7. よくある質問(FAQ)
Q. cp -r と cp -a はどちらを使えばいい?
単純にディレクトリ配下をコピーしたいなら -r(または -R)で十分。シンボリックリンクや所有者・パーミッションまで完全にそのまま残したい場合は -a を使います。バックアップ用途では -a が無難です。
Q. mv file1 file2 で file2 が既に存在したら?
デフォルトは確認なしで上書きされます。安全に扱いたければ mv -i(確認)または mv -n(既存なら上書きしない)を使います。
Q. rmdir と rm -r はどう使い分ける?
rmdir は空ディレクトリ専用の安全な削除、rm -r は中身ごと削除する強力な削除です。空なのに rm -rf を使う必要はなく、空なら rmdir の方が意図が明確で事故も起きません。
Q. mkdir -p dir1/dir2 で dir1 が既にあったらエラー?
なりません。-p は中間ディレクトリが既に存在していてもエラーにせず処理を続行します。逆に -p なしで既存のディレクトリを作ろうとすると「File exists」エラーになります。
Q. rm -rf と rm -fr は違う?
同じです。rm のオプションは順序自由・分割も自由で、-rf/-fr/-r -f/-f -r のいずれもすべて「再帰+強制」と解釈されます。
8. まとめ
cp:cp 元 先。ディレクトリには-r/-R/-aのいずれかが必要。属性保持は-p、完全保持は-acpの上書き:-iは確認、-fは強制(書き込めない既存ファイルを削除してからコピー)、-nは上書きしないmv:移動とリネームを兼ねる。ディレクトリでも-rは不要。-i(確認)/-f(強制上書き)の対比が頻出mkdir:-pで中間ディレクトリも作成+既存エラー抑制、-m MODEで作成時パーミッション指定rmdir:空ディレクトリ専用。中身があればエラー。-pで親も連鎖削除(すべて空時のみ)rm:ディレクトリには-r/-R必須。-fで強制・確認抑制、-iで1件ずつ確認- オプションの組み合わせ:
rm -rf/-fr/-r -f/-f -rは等価。-ri系も同様 - 誤選択肢の定番:
rmdir -r/rmdir -rf(存在しない)、cp dir1 dir2(-rなしでエラー)、rm -r dir1/*(dir1 自体が残る)
9. 模擬問題にチャレンジ(ランダム出題)
ここまでの内容を本試験に近い形で確認できます。問題数を選んで「出題スタート」を押すと、主題1.02.2の問題プールからランダムに出題されます。選択肢をクリック/タップすると、正誤と解説がその場で表示されます。
合格ライン目安:75%以上。1.02.2 には ls/touch/tar/gzip 等の問題も含まれるため、本記事の範囲外の設問は lsコマンドの記事やLinuC 模擬問題ポータルもあわせて確認すると効率的です。
おすすめの教材
【ウズカレ式】1週間でLinuxの基本操作と管理・運用スキルが学べる講座
累計80,000人以上受講。LinuC Level1(101+102)を1週間で網羅。ファイル操作も基礎から解説。
関連記事
📚 LinuC Level1 完全攻略マップへ戻る
全39サブ項目のシラバス準拠マップから他の記事を探せます




コメント