2:ファイルとディレクトリ操作

目次

はじめに

エンジニアが CLI でいちばん多く行う作業が、ファイルやフォルダ(ディレクトリ)を作る・見る・移動する・消すという操作です。普段マウスでやっている「フォルダを開く」「コピーする」「名前を変える」といった作業を、すべてコマンドで行えるようになります。

この回では、現在地の確認から、ディレクトリの作成・コピー・移動・削除までを、実際に手を動かしながら身につけます。


1. ディレクトリ構造とパス

Linux では、すべてのファイルとフォルダが ルート(/ という1つの出発点から枝分かれして並んでいます。この一番おおもとのディレクトリを ルートディレクトリ と呼び、/(スラッシュ)1文字で表します。ディレクトリ=フォルダのことで、CLI の世界ではこの呼び方を使います。

/                         ← ルート(すべての出発点)
├── home/
│   └── username/         ← ホームディレクトリ(あなたの作業部屋)= ~
│       ├── docs/
│       └── images/
├── etc/                  ← 設定ファイルが入る場所
└── var/                  ← ログなどが入る場所

この枝分かれの「住所」を パス(path)=ファイルやディレクトリの場所を示す道順 と呼びます。パスには2種類あります。

種類意味特徴
絶対パスルート / から書いた住所/home/username/docs今いる場所に関係なく、いつも同じ場所を指す
相対パス今いる場所を起点にした住所docs(今いる場所の中の docs)今いる場所によって指す先が変わる

相対パスでは、次の記号がよく使われます。

記号意味
.今いるディレクトリ(カレントディレクトリ=いま自分がいる場所)
..1つ上のディレクトリ(親ディレクトリ)
~ホームディレクトリ(自分の作業部屋)

たとえば /home/username/docs にいるとき、.. は /home/username(1つ上)を指し、~ はどこにいても /home/username を指します。


2. 見る・移動する

まずは「今どこにいるか」「何があるか」を確認し、別の場所へ移動する3つのコマンドを覚えます。

pwd:今いる場所を確認する

L1 でも登場した、現在地を表示するコマンドです(print working directory の略)。

$ pwd

期待される出力(例):

/home/username

ls:今いる場所の中身を一覧表示する

ls は list(一覧) の略で、今いるディレクトリの中にあるファイル・フォルダを表示します。

$ ls

期待される出力(例):

Desktop  Documents  Downloads  docs  images

オプションを付けると、表示の仕方を変えられます。よく使う2つを見てみましょう。

-l:詳しい情報を縦に並べて表示する

-l(long の略)を付けると、権限・サイズ・更新日時などを付けて1行ずつ表示します。

$ ls -l

期待される出力(例):

total 12
drwxr-xr-x  2 username username 4096 May 29 14:30 docs
drwxr-xr-x  2 username username 4096 May 29 14:30 images
-rw-r--r--  1 username username   42 May 29 14:31 memo.txt

先頭の total 行はブロック数の合計です。今は気にしなくて構いません。先頭の drwxr-xr-x は権限(パーミッション)を表します。詳しくは L4 で扱います。行頭の文字が d で始まるものはディレクトリ- で始まるものはファイルです。memo.txt のサイズが 42(バイト)、更新日時が May 29 14:31 だと読み取れます。

-a:隠しファイルも含めて表示する

ファイル名が .(ドット)で始まるものは「隠しファイル」として通常は表示されません。-a(all の略)を付けると、それらも含めてすべて表示します。

$ ls -a

期待される出力(例):

.  ..  .bashrc  .gitconfig  Desktop  Documents  docs  images  memo.txt

先頭の . は今いるディレクトリ、.. は1つ上のディレクトリを表しています(セクション1の記号がここで実際に見えます)。

cd:別のディレクトリへ移動する

cd は change directory(ディレクトリを変える) の略で、引数に移動先のパスを書きます。

$ cd docs
$ pwd

期待される出力(例):

/home/username/docs

移動先には、相対パスでも絶対パスでも指定できます。よく使う書き方を覚えましょう。

cd ~:ホームディレクトリに戻る

どこにいても、~(ホーム)に一発で戻れます。

$ cd ~
$ pwd

期待される出力(例):

/home/username

cd ..:1つ上のディレクトリに移動する

..(親ディレクトリ)を指定すると、1階層上に戻ります。

$ cd docs
$ cd ..
$ pwd

期待される出力(例):

/home/username

docs に入ったあと cd .. で元の /home/username に戻ってきたことが確認できます。


3. 作る

ここからは、何もない空のディレクトリで操作を試す前提で進めます(セクション2の docsimages はいったん忘れ、まっさらな場所で「作る」ところから始めるイメージです)。

次は、ディレクトリとファイルを新しく作るコマンドです。

mkdir:ディレクトリを作る

mkdir は make directory(ディレクトリを作る) の略です。引数に作りたいディレクトリ名を書きます。

$ mkdir docs
$ ls

期待される出力(例):

docs

-p:途中のディレクトリもまとめて作る

docs/2026/05 のように何階層も一度に作りたいとき、通常の mkdir では途中の docs や 2026 が無いとエラーになります。-p を付けると、途中のディレクトリも自動で作ってくれます。

$ mkdir -p docs/2026/05
$ ls docs

期待される出力(例):

2026

touch:空のファイルを作る

touch は本来「ファイルの更新日時を変える」コマンドですが、指定した名前のファイルが無ければ、空のファイルを新しく作る働きもあります。新規ファイル作成によく使われます。

$ touch memo.txt
$ ls

期待される出力(例):

docs  memo.txt

4. コピー・移動・削除

ファイルやディレクトリを複製したり、場所を変えたり、消したりする操作です。ここからは取り扱いに注意が必要なコマンドも出てきます。

cp:コピーする

cp は copy(コピー) の略で、cp コピー元 コピー先 の順に書きます。

$ cp memo.txt memo_backup.txt
$ ls

期待される出力(例):

memo.txt  memo_backup.txt

-r:ディレクトリごとコピーする

ディレクトリを中身ごとコピーするときは -r(recursive=中身も再帰的にたどる、の略)が必要です。これを付けないとディレクトリはコピーできません。

$ cp -r docs docs_backup
$ ls

期待される出力(例):

docs  docs_backup  memo.txt  memo_backup.txt

mv:移動・リネームする

mv は move(移動) の略です。1つのコマンドで「移動」と「名前の変更(リネーム)」の両方をこなします。

移動する場合(移動先がディレクトリ)

$ mv memo.txt docs
$ ls docs

期待される出力(例):

memo.txt

memo.txt が docs ディレクトリの中に移動しました。

リネームする場合(移動先がファイル名)

移動先に「新しいファイル名」を指定すると、名前の変更になります。

$ mv memo_backup.txt memo_old.txt
$ ls

期待される出力(例):

docs  docs_backup  memo_old.txt

memo_backup.txt が memo_old.txt という名前に変わりました。

rm:削除する

rm は remove(削除) の略です。

$ rm memo_old.txt
$ ls

期待される出力(例):

docs  docs_backup

-r:ディレクトリごと削除する

ディレクトリを中身ごと消すときは -r(recursive)を付けます。

$ rm -r docs_backup
$ ls

期待される出力(例):

docs

【危険】rm で消したファイルはゴミ箱に入りません。 GUI のゴミ箱と違い、rm で削除したものは復元できません。実行前に「本当に消してよいファイル名か」を必ず指差し確認してください。

【最重要・絶対に注意】rm -rf は最も危険なコマンドです。 -f(force)は確認なしで強制的に削除するオプションで、-r と組み合わせると指定したディレクトリ以下を問答無用で全削除します。特に rm -rf / や rm -rf ~ のような指定は、システム全体や自分のファイルをすべて消し去る破壊的なコマンドです。学習中は rm -rf を安易に使わず、パスを打つ前に必ず内容を読み直す習慣をつけましょう。


演習

課題:練習用フォルダを作って一連の操作を体験する

L1 で開いた端末を使い、ホームの下に練習用フォルダを作って、作成→コピー→リネーム→削除までを通しでやってみましょう。

$ cd ~
$ mkdir -p linux-practice/docs linux-practice/images
$ cd linux-practice
$ ls

期待される出力(例):

docs  images

続けて、ファイルを作り、コピー・リネーム・削除を行います。

$ touch docs/note.txt
$ cp docs/note.txt docs/note_copy.txt
$ mv docs/note_copy.txt docs/note_final.txt
$ ls -l docs

期待される出力(例):

total 0
-rw-r--r--  1 username username 0 May 29 14:40 note.txt
-rw-r--r--  1 username username 0 May 29 14:40 note_final.txt

最後に、不要になったファイルを削除します。

$ rm docs/note.txt
$ ls docs

期待される出力(例):

note_final.txt

相対パスでの移動も練習しておきましょう。

$ cd docs
$ pwd
$ cd ..
$ pwd

期待される出力(例):

/home/username/linux-practice/docs
/home/username/linux-practice

演習の確認ポイント

  • ☐ ~/linux-practice/ の下に docs/ と images/ を作れましたか?
  • ☐ ls -l でファイルの一覧・サイズ・更新日時を確認できましたか?
  • ☐ cd docs → cd .. のように、相対パスで行き来できましたか?
目次