このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
LinuC入門|コマンド演習07

LinuCコマンド演習07では、2章で登場したコマンドについて、実際にAlmaLinuxのターミナルを操作しながら理解を深めます。
今回練習するのは、ファイルやディレクトリのコピー、移動、名前変更、作成、削除を行う次のコマンドです。
| コマンド | 主な役割 | 基本例 |
|---|---|---|
| cp | ファイルやディレクトリをコピーする | cp report.txt backup.txt |
| mv | ファイルやディレクトリを移動、名前変更する | mv old.txt new.txt |
| rm | ファイルや中身のあるディレクトリを削除する | rm report.txt |
| mkdir | 新しいディレクトリを作成する | mkdir project |
| rmdir | 空のディレクトリを削除する | rmdir emptydir |
cpはコピー元を残したまま複製しますが、mvは元の場所から対象を移します。rmとrmdirはどちらも削除に使いますが、rmはファイルや中身のあるディレクトリ、rmdirは空のディレクトリを対象にします。
特にrmは削除したファイルを簡単には元へ戻せません。演習ではホームディレクトリ内に専用の練習用ディレクトリを作り、その中だけを操作します。
cpコマンド
cpは、ファイルやディレクトリをコピーするコマンドです。
コピー元は残り、コピー先に新しいファイルやディレクトリが作成されます。
基本書式
cp [オプション] コピー元 コピー先複数のファイルをディレクトリへコピーする場合は、最後にコピー先ディレクトリを指定します。
cp [オプション] コピー元1 コピー元2 コピー先ディレクトリcpの主な使用例
| コマンド | 説明 |
|---|---|
| cp report.txt backup.txt | report.txtをbackup.txtという名前でコピーする |
| cp report.txt backup/ | report.txtをbackupへコピーする |
| cp report1.txt report2.txt backup/ | 2つのファイルをbackupへコピーする |
| cp -r project project-backup | projectを中身ごとコピーする |
| cp -i report.txt backup.txt | 上書き前に確認する |
| cp -p report.txt backup.txt | パーミッションやタイムスタンプなどを保持する |
| cp -v report.txt backup.txt | コピーした対象を表示する |
この表では、cpによるファイルコピー、ディレクトリコピー、上書き確認などの基本操作をまとめています。
通常のファイルはcpだけでコピーできます。ディレクトリを中身ごとコピーするときは-rまたは-Rが必要です。コピー先に同名ファイルがある場合は上書きされる可能性があるため、心配なときは-iを使用します。
cpの主なオプション
| オプション | 説明 |
|---|---|
| -r | ディレクトリを中身ごと再帰的にコピーする |
| -R | -rと同様に再帰的にコピーする |
| -i | 上書き前に確認する |
| -p | パーミッションやタイムスタンプなどを保持する |
| -a | 構成や属性をできるだけ保持してコピーする |
| -v | コピーした対象を表示する |
| -f | 必要に応じてコピー先を強制的に置き換える |
この表から分かるように、対象が通常ファイルかディレクトリかによって必要なオプションが変わります。
学習中や大切なファイルを扱う場合は、動作を確認しやすい-iや-vを活用すると安心です。
mvコマンド
mvは、ファイルやディレクトリを別の場所へ移動するコマンドです。
同じディレクトリ内で移動先に新しい名前を指定すると、名前の変更として動作します。
基本書式
mv [オプション] 移動元 移動先mvの主な使用例
| コマンド | 説明 |
|---|---|
| mv old.txt new.txt | old.txtをnew.txtへ名前変更する |
| mv report.txt backup/ | report.txtをbackupへ移動する |
| mv report1.txt report2.txt backup/ | 2つのファイルをbackupへ移動する |
| mv project archive/ | projectをarchiveへ移動する |
| mv -i report.txt backup/ | 上書き前に確認する |
| mv -n report.txt backup/ | 同名ファイルがある場合は上書きしない |
| mv -v report.txt backup/ | 移動した対象を表示する |
この表では、mvの2つの基本的な使い方である移動と名前変更を整理しています。
移動先にディレクトリを指定すると、そのディレクトリ内へ移動します。移動先に新しいファイル名を指定すると、名前が変更されます。
mvの主なオプション
| オプション | 説明 |
|---|---|
| -i | 上書き前に確認する |
| -n | 既存ファイルを上書きしない |
| -f | 確認せずに上書きする |
| -v | 移動や名前変更の内容を表示する |
この表から分かるように、mvでは上書きに関するオプションが重要です。
同名ファイルがある場合に確認したいときは-i、上書きしたくないときは-nを使用します。
cpとmvの違い
| 比較項目 | cp | mv |
|---|---|---|
| 主な目的 | コピー | 移動または名前変更 |
| 元の対象 | 残る | 元の場所からなくなる |
| 処理後 | 同じ内容の対象が2つになる | 場所または名前が変わる |
| ディレクトリ操作 | -rまたは-Rが必要 | 通常はそのまま移動できる |
| 上書き確認 | cp -i | mv -i |
この表では、混同しやすいcpとmvの違いを比較しています。
バックアップを作りたい場合はcpを使います。ファイルを別の場所へ整理したい場合や名前を変更したい場合はmvを使います。
rmコマンド
rmは、ファイルやディレクトリを削除するコマンドです。
オプションを付けない場合は、基本的にファイルを削除します。ディレクトリを中身ごと削除する場合は-rまたは-Rが必要です。
基本書式
rm [オプション] ファイルまたはディレクトリrmの主な使用例
| コマンド | 説明 |
|---|---|
| rm report.txt | report.txtを削除する |
| rm report1.txt report2.txt | 2つのファイルを削除する |
| rm -i report.txt | 削除前に確認する |
| rm -I report*.txt | 多数のファイルを削除するときに一度確認する |
| rm -r project | projectを中身ごと削除する |
| rm -v report.txt | 削除した対象を表示する |
| rm -f report.txt | 確認せず、存在しない場合もエラーにせず処理する |
この表では、rmによるファイル削除とディレクトリ削除の違いを整理しています。
ファイルはrmだけで削除できますが、中身のあるディレクトリには-rが必要です。削除前に対象を確認したい場合は-iを使用します。
rmの主なオプション
| オプション | 説明 |
|---|---|
| -i | 対象ごとに削除を確認する |
| -I | 多数のファイルや再帰削除の場合に一度確認する |
| -r | ディレクトリと中身を再帰的に削除する |
| -R | -rと同様に再帰的に削除する |
| -f | 確認せずに処理する |
| -v | 削除した対象を表示する |
この表から分かるように、-rと-fは削除範囲や確認方法に大きく影響するオプションです。
rm -rとrm -fを組み合わせると、確認なしでディレクトリを中身ごと削除できます。実行前に現在地、削除対象のパス、対象の中身を十分に確認してください。
mkdirコマンド
mkdirは、新しいディレクトリを作成するコマンドです。
基本書式
mkdir [オプション] ディレクトリmkdirの主な使用例
| コマンド | 説明 |
|---|---|
| mkdir project | projectを作成する |
| mkdir project backup | 2つのディレクトリを作成する |
| mkdir -p project/docs | 親ディレクトリを含めて作成する |
| mkdir -m 700 private | パーミッションを700に指定して作成する |
| mkdir -v project | 作成したディレクトリを表示する |
この表では、mkdirによる単独のディレクトリ作成、階層作成、パーミッション指定をまとめています。
通常のmkdirでは、途中の親ディレクトリが存在しないと作成できません。-pを付けると、必要な親ディレクトリもまとめて作成できます。
mkdirの主なオプション
| オプション | 説明 |
|---|---|
| -p | 必要な親ディレクトリもまとめて作成する |
| -m モード | 作成時のパーミッションを指定する |
| -v | 作成したディレクトリを表示する |
この表から分かるように、階層をまとめて作成するときは-p、作成時のパーミッションを指定するときは-mを使います。
例えば、projectが存在しない状態でも、次のコマンドならprojectとdocsを一度に作成できます。
suzuki@AlmaLinux:~$ mkdir -p project/docsrmdirコマンド
rmdirは、空のディレクトリを削除するコマンドです。
ディレクトリ内にファイルやサブディレクトリがある場合は削除できません。この動作によって、中身を誤って削除することを防げます。
基本書式
rmdir [オプション] ディレクトリrmdirの主な使用例
| コマンド | 説明 |
|---|---|
| rmdir emptydir | 空のemptydirを削除する |
| rmdir dir1 dir2 | 2つの空ディレクトリを削除する |
| rmdir -p project/docs | docsを削除し、空になったprojectも削除する |
| rmdir -v emptydir | 削除したディレクトリを表示する |
この表では、rmdirによる空のディレクトリの削除方法を整理しています。
-pを指定すると、対象を削除した後、空になった親ディレクトリも順番に削除できます。
rmdirの主なオプション
| オプション | 説明 |
|---|---|
| -p | 指定したディレクトリと空になった親ディレクトリを削除する |
| -v | 削除したディレクトリを表示する |
| --ignore-fail-on-non-empty | 空でないことによる削除失敗をエラーとして扱わない |
この表から分かるように、rmdirは空のディレクトリを安全に整理するためのコマンドです。
rmdirで削除できない場合は、ls -laで隠しファイルを含めた中身を確認します。確認せずにrm -rへ切り替えないことが大切です。
rmとrmdirの違い
| 比較項目 | rm | rmdir |
|---|---|---|
| 通常ファイル | 削除できる | 削除できない |
| 空のディレクトリ | -rで削除できる | 削除できる |
| 中身のあるディレクトリ | -rで削除できる | 削除できない |
| 誤削除の危険性 | オプションによって高くなる | 比較的低い |
| 主な用途 | ファイルやディレクトリ全体の削除 | 空のディレクトリの削除 |
この表では、rmとrmdirが削除できる対象を比較しています。
空のディレクトリにはrmdirを使えます。ファイルが入ったディレクトリを削除する場合はrm -rが必要ですが、実行前にls -laやls -Rで中身を確認してください。
演習問題+模範解答例

以下の演習では、ホームディレクトリ内に演習専用のディレクトリを作成します。
削除操作では、問題文で作成した演習用ファイルやディレクトリだけを対象にしてください。
演習01:mkdirコマンド(ディレクトリの作成)
問題
次の手順で演習用ディレクトリを作成してください。
- ホームディレクトリへ移動する
- linuc07-ex01ディレクトリを作成する
- linuc07-ex01の下にprojectとdocsの階層を作成する
- ls -Rで作成結果を確認する
模範解答例
suzuki@AlmaLinux:~$ cd ~
suzuki@AlmaLinux:~$ mkdir linuc07-ex01
suzuki@AlmaLinux:~$ mkdir -p linuc07-ex01/project/docs
suzuki@AlmaLinux:~$ ls -R linuc07-ex01
linuc07-ex01:
project
linuc07-ex01/project:
docs
linuc07-ex01/project/docs:解説
最初のmkdirでlinuc07-ex01を作成しています。
mkdir -pでは、途中のprojectが存在しなくても、projectとdocsをまとめて作成できます。ls -Rを使うと、サブディレクトリを含む階層を確認できます。
演習02:cpコマンド(ファイルのコピー)
問題
次の手順で演習用ファイルを作成し、コピーしてください。
- ~/linuc07-ex02ディレクトリを作成する
- 作成したディレクトリへ移動する
- touchを使ってreport.txtを作成する
- report.txtをbackup.txtという名前でコピーする
- ls -lでコピー元とコピー先を確認する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc07-ex02
suzuki@AlmaLinux:~$ cd ~/linuc07-ex02
suzuki@AlmaLinux:~/linuc07-ex02$ touch report.txt
suzuki@AlmaLinux:~/linuc07-ex02$ cp report.txt backup.txt
suzuki@AlmaLinux:~/linuc07-ex02$ ls -l report.txt backup.txt
-rw-r--r--. 1 suzuki suzuki 0 8月 16 21:10 backup.txt
-rw-r--r--. 1 suzuki suzuki 0 8月 16 21:10 report.txt解説
cp report.txt backup.txtでは、report.txtがコピー元、backup.txtがコピー先です。
コピー後もreport.txtは残り、新しくbackup.txtが作成されます。
演習03:mvコマンド(名前変更と移動)
問題
次の手順でファイルの名前を変更し、別のディレクトリへ移動してください。
- ~/linuc07-ex03ディレクトリを作成する
- 作成したディレクトリへ移動する
- old-report.txtを作成する
- old-report.txtをnew-report.txtへ名前変更する
- archiveディレクトリを作成する
- new-report.txtをarchiveへ移動する
- ls -Rで結果を確認する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc07-ex03
suzuki@AlmaLinux:~$ cd ~/linuc07-ex03
suzuki@AlmaLinux:~/linuc07-ex03$ touch old-report.txt
suzuki@AlmaLinux:~/linuc07-ex03$ mv old-report.txt new-report.txt
suzuki@AlmaLinux:~/linuc07-ex03$ mkdir archive
suzuki@AlmaLinux:~/linuc07-ex03$ mv new-report.txt archive/
suzuki@AlmaLinux:~/linuc07-ex03$ ls -R
.:
archive
./archive:
new-report.txt解説
mv old-report.txt new-report.txtでは、ファイル名を変更しています。
mv new-report.txt archive/では、new-report.txtをarchiveへ移動しています。移動後、元の場所にはnew-report.txtが残りません。
演習04:rmコマンド(確認しながらファイルを削除)
問題
次の手順で削除用ファイルを作成し、確認してから削除してください。
- ~/linuc07-ex04ディレクトリを作成する
- 作成したディレクトリへ移動する
- delete-report.txtを作成する
- lsで削除対象を確認する
- rm -iでdelete-report.txtを削除する
- 確認にyと入力する
- lsで削除結果を確認する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc07-ex04
suzuki@AlmaLinux:~$ cd ~/linuc07-ex04
suzuki@AlmaLinux:~/linuc07-ex04$ touch delete-report.txt
suzuki@AlmaLinux:~/linuc07-ex04$ ls delete-report.txt
delete-report.txt
suzuki@AlmaLinux:~/linuc07-ex04$ rm -i delete-report.txt
rm: 通常の空ファイル delete-report.txt を削除しますか? y
suzuki@AlmaLinux:~/linuc07-ex04$ ls解説
rm -iを使うと、削除前に確認メッセージが表示されます。yを入力すると削除し、nを入力すると中止します。
最後のlsで何も表示されないため、delete-report.txtが削除されたことを確認できます。
演習05:rmdirコマンド(空のディレクトリの削除)
問題
次の手順で空のディレクトリを作成し、rmdirで削除してください。
- ~/linuc07-ex05ディレクトリを作成する
- その中にemptydirを作成する
- ls -laでemptydirが空であることを確認する
- rmdirでemptydirを削除する
- lsで削除結果を確認する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc07-ex05/emptydir
suzuki@AlmaLinux:~$ cd ~/linuc07-ex05
suzuki@AlmaLinux:~/linuc07-ex05$ ls -la emptydir
合計 0
drwxr-xr-x. 2 suzuki suzuki 6 8月 16 21:30 .
drwxr-xr-x. 3 suzuki suzuki 22 8月 16 21:30 ..
suzuki@AlmaLinux:~/linuc07-ex05$ rmdir emptydir
suzuki@AlmaLinux:~/linuc07-ex05$ ls解説
emptydirには.と..以外の項目がないため、空のディレクトリとしてrmdirで削除できます。
ファイルやサブディレクトリが入っている場合、rmdirは削除を行いません。
演習06:rmコマンド(中身のあるディレクトリの削除)
問題
次の手順でファイルが入ったディレクトリを作成し、中身を確認してから削除してください。
- ~/linuc07-ex06/projectディレクトリを作成する
- projectの中にreport.txtとmemo.txtを作成する
- ls -Rで削除対象の中身を確認する
- rm -rでprojectを中身ごと削除する
- lsで削除結果を確認する
削除対象は、この問題で作成した~/linuc07-ex06/projectだけにしてください。
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc07-ex06/project
suzuki@AlmaLinux:~$ cd ~/linuc07-ex06
suzuki@AlmaLinux:~/linuc07-ex06$ touch project/report.txt project/memo.txt
suzuki@AlmaLinux:~/linuc07-ex06$ ls -R
.:
project
./project:
memo.txt report.txt
suzuki@AlmaLinux:~/linuc07-ex06$ rm -r project
suzuki@AlmaLinux:~/linuc07-ex06$ ls解説
projectにはreport.txtとmemo.txtが入っているため、rmdirでは削除できません。ディレクトリと中身をまとめて削除するにはrm -rを使用します。
rm -rを実行する前には、ls -Rやls -laで削除対象を確認してください。この問題では、~/linuc07-ex06/project以外を指定しないようにします。
まとめ
LinuCコマンド演習07では、2章で登場したコマンドについて、ファイルやディレクトリのコピー、移動、名前変更、作成、削除を演習しました。コピー元を残して複製する場合はcp、移動や名前変更にはmv、新しいディレクトリの作成にはmkdirを使用します。削除では、ファイルや中身のあるディレクトリにはrm、空のディレクトリにはrmdirを使用します。特にrm -rはディレクトリの中身をまとめて削除するため、実行前に現在地、対象のパス、中身を確認し、削除後にもlsで結果を確認する習慣を身に付けることが大切です。
