このページで解説している内容は、以下の 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.txtreport.txtをbackup.txtという名前でコピーする
cp report.txt backup/report.txtをbackupへコピーする
cp report1.txt report2.txt backup/2つのファイルをbackupへコピーする
cp -r project project-backupprojectを中身ごとコピーする
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.txtold.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の違い

比較項目cpmv
主な目的コピー移動または名前変更
元の対象残る元の場所からなくなる
処理後同じ内容の対象が2つになる場所または名前が変わる
ディレクトリ操作-rまたは-Rが必要通常はそのまま移動できる
上書き確認cp -imv -i

この表では、混同しやすいcpとmvの違いを比較しています。

バックアップを作りたい場合はcpを使います。ファイルを別の場所へ整理したい場合や名前を変更したい場合はmvを使います。

rmコマンド

rmは、ファイルやディレクトリを削除するコマンドです。

オプションを付けない場合は、基本的にファイルを削除します。ディレクトリを中身ごと削除する場合は-rまたは-Rが必要です。

基本書式

rm [オプション] ファイルまたはディレクトリ

rmの主な使用例

コマンド説明
rm report.txtreport.txtを削除する
rm report1.txt report2.txt2つのファイルを削除する
rm -i report.txt削除前に確認する
rm -I report*.txt多数のファイルを削除するときに一度確認する
rm -r projectprojectを中身ごと削除する
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 projectprojectを作成する
mkdir project backup2つのディレクトリを作成する
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/docs

rmdirコマンド

rmdirは、空のディレクトリを削除するコマンドです。

ディレクトリ内にファイルやサブディレクトリがある場合は削除できません。この動作によって、中身を誤って削除することを防げます。

基本書式

rmdir [オプション] ディレクトリ

rmdirの主な使用例

コマンド説明
rmdir emptydir空のemptydirを削除する
rmdir dir1 dir22つの空ディレクトリを削除する
rmdir -p project/docsdocsを削除し、空になったprojectも削除する
rmdir -v emptydir削除したディレクトリを表示する

この表では、rmdirによる空のディレクトリの削除方法を整理しています。

-pを指定すると、対象を削除した後、空になった親ディレクトリも順番に削除できます。

rmdirの主なオプション

オプション説明
-p指定したディレクトリと空になった親ディレクトリを削除する
-v削除したディレクトリを表示する
--ignore-fail-on-non-empty空でないことによる削除失敗をエラーとして扱わない

この表から分かるように、rmdirは空のディレクトリを安全に整理するためのコマンドです。

rmdirで削除できない場合は、ls -laで隠しファイルを含めた中身を確認します。確認せずにrm -rへ切り替えないことが大切です。

rmとrmdirの違い

比較項目rmrmdir
通常ファイル削除できる削除できない
空のディレクトリ-rで削除できる削除できる
中身のあるディレクトリ-rで削除できる削除できない
誤削除の危険性オプションによって高くなる比較的低い
主な用途ファイルやディレクトリ全体の削除空のディレクトリの削除

この表では、rmとrmdirが削除できる対象を比較しています。

空のディレクトリにはrmdirを使えます。ファイルが入ったディレクトリを削除する場合はrm -rが必要ですが、実行前にls -laやls -Rで中身を確認してください。

演習問題+模範解答例

以下の演習では、ホームディレクトリ内に演習専用のディレクトリを作成します。

削除操作では、問題文で作成した演習用ファイルやディレクトリだけを対象にしてください。

演習01:mkdirコマンド(ディレクトリの作成)

問題

次の手順で演習用ディレクトリを作成してください。

  1. ホームディレクトリへ移動する
  2. linuc07-ex01ディレクトリを作成する
  3. linuc07-ex01の下にprojectとdocsの階層を作成する
  4. 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コマンド(ファイルのコピー)

問題

次の手順で演習用ファイルを作成し、コピーしてください。

  1. ~/linuc07-ex02ディレクトリを作成する
  2. 作成したディレクトリへ移動する
  3. touchを使ってreport.txtを作成する
  4. report.txtをbackup.txtという名前でコピーする
  5. 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コマンド(名前変更と移動)

問題

次の手順でファイルの名前を変更し、別のディレクトリへ移動してください。

  1. ~/linuc07-ex03ディレクトリを作成する
  2. 作成したディレクトリへ移動する
  3. old-report.txtを作成する
  4. old-report.txtをnew-report.txtへ名前変更する
  5. archiveディレクトリを作成する
  6. new-report.txtをarchiveへ移動する
  7. 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コマンド(確認しながらファイルを削除)

問題

次の手順で削除用ファイルを作成し、確認してから削除してください。

  1. ~/linuc07-ex04ディレクトリを作成する
  2. 作成したディレクトリへ移動する
  3. delete-report.txtを作成する
  4. lsで削除対象を確認する
  5. rm -iでdelete-report.txtを削除する
  6. 確認にyと入力する
  7. 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で削除してください。

  1. ~/linuc07-ex05ディレクトリを作成する
  2. その中にemptydirを作成する
  3. ls -laでemptydirが空であることを確認する
  4. rmdirでemptydirを削除する
  5. 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コマンド(中身のあるディレクトリの削除)

問題

次の手順でファイルが入ったディレクトリを作成し、中身を確認してから削除してください。

  1. ~/linuc07-ex06/projectディレクトリを作成する
  2. projectの中にreport.txtとmemo.txtを作成する
  3. ls -Rで削除対象の中身を確認する
  4. rm -rでprojectを中身ごと削除する
  5. 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で結果を確認する習慣を身に付けることが大切です。