cp/mv/rm/mkdir/touch 基本ファイル操作完全ガイド【LinuC 1.02.2】

LinuC対策

cp/mv/rm/mkdir/rmdir|LinuC 1.02.2 基本ファイル操作ガイド

この記事は LinuC Level1 副主題 1.02.2「基本的なファイル管理の実行」のうち、コピー・移動・削除・ディレクトリ作成/削除に関わる cpmvrmmkdirrmdir を扱います。試験で問われるのは日常利用ではあまり意識しない オプション記号の弁別上書き時のデフォルト動作です。必要な知識だけに絞ってまとめました。

📚 LinuC Level1 完全攻略マップ(全39サブ項目)へ戻る


目次

  1. この記事でできるようになること
  2. cp:コピー(-r-R-a-p-i-f
  3. mv:移動・リネーム(-i-f
  4. mkdir:ディレクトリ作成(-p-m
  5. rmdir:空ディレクトリ削除(-p
  6. rm:削除(-r-f-i-rf-ri
  7. よくある質問(FAQ)
  8. まとめ
  9. 模擬問題にチャレンジ(ランダム出題)

1. この記事でできるようになること

LinuC 1.02.2 の出題範囲のうち、本記事で押さえる要点:

  • cpmvrmmkdirrmdir がそれぞれ何をするコマンドか
  • cp -r-R-a の違いと、ディレクトリコピーでは再帰指定が必須になる点
  • -i(確認)/-f(強制)/-p(属性保持)の弁別
  • mkdir -p(親ごと作成)/mkdir -m(モード指定)
  • rmdirrm -r の使い分け、rmdir -p の挙動
  • rm -r-rf-ri の順序・分割指定が等価であること

lstouchfile/ワイルドカードは lsコマンドの記事targzipbzip2xzddアーカイブ・圧縮の記事で扱います。


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'
多くのディストリで cpcp -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 -rrmdir -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 -rcp -a はどちらを使えばいい?

単純にディレクトリ配下をコピーしたいなら -r(または -R)で十分。シンボリックリンクや所有者・パーミッションまで完全にそのまま残したい場合は -a を使います。バックアップ用途では -a が無難です。

Q. mv file1 file2 で file2 が既に存在したら?

デフォルトは確認なしで上書きされます。安全に扱いたければ mv -i(確認)または mv -n(既存なら上書きしない)を使います。

Q. rmdirrm -r はどう使い分ける?

rmdir空ディレクトリ専用の安全な削除、rm -r中身ごと削除する強力な削除です。空なのに rm -rf を使う必要はなく、空なら rmdir の方が意図が明確で事故も起きません。

Q. mkdir -p dir1/dir2 で dir1 が既にあったらエラー?

なりません。-p は中間ディレクトリが既に存在していてもエラーにせず処理を続行します。逆に -p なしで既存のディレクトリを作ろうとすると「File exists」エラーになります。

Q. rm -rfrm -fr は違う?

同じです。rm のオプションは順序自由・分割も自由で、-rf-fr-r -f-f -r のいずれもすべて「再帰+強制」と解釈されます。


8. まとめ

  • cpcp 元 先。ディレクトリには -r-R-a のいずれかが必要。属性保持は -p、完全保持は -a
  • cp の上書き-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 -rrmdir -rf(存在しない)、cp dir1 dir2-r なしでエラー)、rm -r dir1/*(dir1 自体が残る)

9. 模擬問題にチャレンジ(ランダム出題)

ここまでの内容を本試験に近い形で確認できます。問題数を選んで「出題スタート」を押すと、主題1.02.2の問題プールからランダムに出題されます。選択肢をクリック/タップすると、正誤と解説がその場で表示されます。

合格ライン目安:75%以上。1.02.2 には lstouchtargzip 等の問題も含まれるため、本記事の範囲外の設問は lsコマンドの記事LinuC 模擬問題ポータルもあわせて確認すると効率的です。


おすすめの教材


Linux教科書 LPICレベル1

Linux教科書 LPICレベル1 Version 5.0対応(あずき本)

LinuC/LPIC Level1 の定番参考書。出題範囲全体を網羅。


Amazonで見る →

【ウズカレ式】1週間でLinuxの基本操作と管理・運用スキルが学べる講座

累計80,000人以上受講。LinuC Level1(101+102)を1週間で網羅。ファイル操作も基礎から解説。


Udemyで講座を見る →


関連記事

📚 LinuC Level1 完全攻略マップへ戻る
全39サブ項目のシラバス準拠マップから他の記事を探せます

Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →

コメント

タイトルとURLをコピーしました