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

LinuCコマンド演習06の概要
LinuCコマンド演習06では、1章で登場したコマンドについて学んだ流れを踏まえ、2章で登場したls、touch、ワイルドカード、ブレース展開の基本操作を練習します。
今回の演習では、ファイルやディレクトリを表示するだけでなく、複数のファイルを効率よく作成したり、ファイル名のパターンを使って目的のファイルを絞り込んだりします。
| 操作 | 主な役割 | 基本例 |
|---|---|---|
| ls | ファイルやディレクトリを一覧表示する | ls -l |
| touch | 空のファイルを作成したり、タイムスタンプを更新したりする | touch memo.txt |
| ワイルドカード | 既存のファイル名をパターンで指定する | ls report*.txt |
| ブレース展開 | 規則的な文字列をまとめて生成する | touch report{1..3}.txt |
この表から分かるように、lsとtouchは実際に処理を行うコマンドです。一方、ワイルドカードとブレース展開は、Bashがコマンドを実行する前にファイル名や文字列を展開する仕組みです。
lsコマンド
lsは、ファイルやディレクトリの情報を一覧表示するコマンドです。
引数を指定しない場合は、現在いるディレクトリの内容を表示します。ファイル名やディレクトリ名を指定すると、その対象の情報を表示できます。
基本書式
ls [オプション] [ファイルまたはディレクトリ]基本的な使用例
| コマンド | 説明 |
|---|---|
| ls | 現在のディレクトリの内容を表示する |
| ls /etc | /etcディレクトリの内容を表示する |
| ls report.txt | report.txtの情報を表示する |
| ls -l | ファイルの詳しい情報を表示する |
| ls -a | 隠しファイルを含めて表示する |
| ls -h | ファイルサイズを読みやすい単位で表示する |
| ls -F | ファイルの種類を表す記号を付ける |
| ls -R | サブディレクトリの内容も再帰的に表示する |
| ls -t | 更新時刻の新しい順に表示する |
| ls -i | iノード番号を表示する |
| ls -d | ディレクトリの内容ではなく、ディレクトリ自身を表示する |
-hはファイルサイズを読みやすくするオプションなので、通常は-lと組み合わせてls -lhのように使います。
よく使うオプションの組み合わせ
| コマンド | 確認できる内容 |
|---|---|
| ls -l | パーミッション、所有者、サイズ、更新日時など |
| ls -la | 隠しファイルを含む詳しい一覧 |
| ls -lh | サイズをKiB、MiB、GiBなどで表示 |
| ls -lah | 隠しファイルを含む詳しい一覧を読みやすい単位で表示 |
| ls -ltr | 更新時刻の古い順に詳しく表示 |
| ls -ld Documents | Documentsの中身ではなく、Documents自身の情報を表示 |
この表では、lsのオプションを組み合わせたときの使い方を整理しています。例えばls -laの-lと-aは、それぞれ詳しい表示と隠しファイルの表示を意味します。
ls -lの表示内容
suzuki@AlmaLinux:~$ ls -l report.txt
-rw-r--r--. 1 suzuki suzuki 1845 8月 15 01:20 report.txt| 表示内容 | 意味 |
|---|---|
| - | ファイルの種類 |
| rw-r--r-- | パーミッション |
| 1 | ハードリンク数 |
| suzuki | 所有者 |
| suzuki | 所有グループ |
| 1845 | ファイルサイズ |
| 8月 15 01:20 | 最終更新日時 |
| report.txt | ファイル名 |
先頭が-の場合は通常のファイル、dの場合はディレクトリです。AlmaLinuxではSELinuxに関係する情報がある場合、パーミッションの後ろに.が表示されることがあります。
touchコマンド
touchは、ファイルのアクセスタイムや更新タイムを変更するコマンドです。
指定したファイルが存在しない場合は、内容が空の新しいファイルを作成します。すでに存在する場合は、標準ではアクセスタイムと更新タイムを現在時刻に変更します。
基本書式
touch [オプション] ファイル名基本的な使用例
| コマンド | 説明 |
|---|---|
| touch memo.txt | memo.txtがなければ空のファイルを作成する |
| touch memo1.txt memo2.txt | 2つのファイルを作成または更新する |
| touch -a memo.txt | アクセスタイムだけを更新する |
| touch -m memo.txt | 更新タイムだけを更新する |
| touch -c memo.txt | ファイルが存在するときだけタイムスタンプを更新する |
| touch -t 202608150900 memo.txt | 2026年8月15日9時00分に設定する |
| touch -r base.txt memo.txt | base.txtと同じタイムスタンプにする |
touchで扱う主な時刻
| 時刻 | 意味 | touchのオプション |
|---|---|---|
| アクセスタイム | ファイルへ最後にアクセスした時刻 | -a |
| 更新タイム | ファイルの内容を最後に変更した時刻 | -m |
| ステータス変更時刻 | 所有者やパーミッションなどを変更した時刻 | 直接指定できない |
touchは、すべての時刻を自由に変更できるわけではありません。touchで主に扱うのはアクセスタイムと更新タイムです。
touch -tの日時形式
touch -t [[CC]YY]MMDDhhmm[.ss] ファイル名| 部分 | 意味 |
|---|---|
| CC | 西暦の上2桁 |
| YY | 西暦の下2桁 |
| MM | 月 |
| DD | 日 |
| hh | 時 |
| mm | 分 |
| ss | 秒 |
例えば、次のコマンドはreport.txtのタイムスタンプを2026年8月15日9時30分に設定します。
suzuki@AlmaLinux:~$ touch -t 202608150930 report.txtワイルドカード
ワイルドカードは、特殊な記号を使って複数のファイル名をパターンで指定する仕組みです。
ワイルドカードを処理するのはlsやtouchではなくBashです。Bashがパターンに一致する既存のファイル名を探し、その結果をlsなどのコマンドへ引数として渡します。
基本的なワイルドカード
| 記号 | 意味 | 使用例 |
|---|---|---|
| * | 0文字以上の任意の文字 | ls report*.txt |
| ? | 任意の1文字 | ls report?.txt |
| [123] | 1、2、3のいずれか1文字 | ls report[123].txt |
| [1-3] | 1から3までのいずれか1文字 | ls report[1-3].txt |
| [!12] | 1と2以外の任意の1文字 | ls report[!12].txt |
| [^12] | 1と2以外の任意の1文字 | ls report[^12].txt |
この表で特に大切なのは、*と?の違いです。
- *は0文字以上に一致する
- ?は必ず1文字に一致する
- [1-3]は指定した範囲の中から1文字に一致する
* の動作
次のファイルが存在するとします。
report.txt
report1.txt
report12.txt
memo.txt次のコマンドを実行します。
suzuki@AlmaLinux:~$ ls report*.txt
report.txt report1.txt report12.txt*は0文字以上に一致するため、report.txt、report1.txt、report12.txtが対象になります。memo.txtはreportで始まらないため対象外です。
?の動作
suzuki@AlmaLinux:~$ ls report?.txt
report1.txt?は任意の1文字だけに一致します。
- report1.txtはreportと.txtの間に1文字あるため一致する
- report.txtは間に文字がないため一致しない
- report12.txtは間に2文字あるため一致しない
[ ]の動作
suzuki@AlmaLinux:~$ ls report[1-3].txt
report1.txt report2.txt report3.txt[1-3]は、1、2、3のいずれか1文字に一致します。report10.txtのように数字が2文字あるファイルは対象外です。
隠しファイルとワイルドカード
通常のBashでは、*だけを指定しても先頭が.の隠しファイルには一致しません。
suzuki@AlmaLinux:~$ touch .secret.txt
suzuki@AlmaLinux:~$ ls *.txtこの場合、.secret.txtは表示されません。先頭の.も明示して、次のように指定します。
suzuki@AlmaLinux:~$ ls .*.txt
.secret.txtブレース展開
ブレース展開は、{ }の中に指定した文字列や連続する値から、複数の文字列を生成するBashの機能です。
ワイルドカードとの大きな違いは、対象となるファイルが存在しなくても展開されることです。
基本的なブレース展開
| 形式 | 展開結果 |
|---|---|
| file{1,2,3}.txt | file1.txt file2.txt file3.txt |
| file{1..3}.txt | file1.txt file2.txt file3.txt |
| file{a,b,c}.txt | filea.txt fileb.txt filec.txt |
| file{a..c}.txt | filea.txt fileb.txt filec.txt |
| {red,blue}-file.txt | red-file.txt blue-file.txt |
| chap{01..03} | chap01 chap02 chap03 |
ブレース内のカンマの前後には、空白を入れません。
file{1,2,3}.txt次のように空白を入れると、意図したブレース展開になりません。
file{1, 2, 3}.txttouchとブレース展開の組み合わせ
suzuki@AlmaLinux:~$ touch report{1..3}.txtBashは、まず次の3つの文字列に展開します。
report1.txt report2.txt report3.txtその後、touchへ3つのファイル名を渡します。結果として、3つのファイルが作成されます。
ワイルドカードとの違い
| 比較項目 | ワイルドカード | ブレース展開 |
|---|---|---|
| 主な目的 | 既存のファイル名を検索する | 複数の文字列を生成する |
| ファイルの存在 | 一致する既存ファイルを探す | ファイルがなくても展開する |
| 代表的な記号 | *、?、[ ] | { } |
| 使用例 | ls report*.txt | touch report{1..3}.txt |
| 処理するもの | Bash | Bash |
ワイルドカードもブレース展開もBashが処理しますが、目的が異なります。
ワイルドカードは既存のファイルを探す機能です。ブレース展開は、コマンドへ渡す文字列をまとめて作る機能です。
ブレース展開とワイルドカード展開の順番
Bashでは、ブレース展開がワイルドカードによるファイル名展開より先に行われます。
次のコマンドを例に考えます。
suzuki@AlmaLinux:~$ ls report{1,2}*.txtまず、ブレース展開によって次の2つのパターンが生成されます。
report1*.txt
report2*.txtその後、それぞれの*がワイルドカードとして展開されます。
| 処理段階 | 展開内容 |
|---|---|
| 入力 | ls report{1,2}*.txt |
| ブレース展開 | ls report1*.txt report2*.txt |
| ワイルドカード展開 | ls report1.txt report12.txt report2.txt report21.txt |
| コマンド実行 | lsが4つのファイルを表示する |
この表は、ブレース展開とワイルドカードを同じ文字列で使用した場合の処理順序を表しています。ブレース展開で文字列を増やした後、それぞれの文字列に含まれるワイルドカードが既存のファイル名と照合されます。
演習問題+模範解答例

演習では、ホームディレクトリの下にlinuc06-workという専用ディレクトリを作成します。既存のファイルへ影響を与えないように、各演習ではex01、ex02のように個別のディレクトリを使用します。
演習01:lsコマンド(ファイルの一覧表示)
問題
次の手順で演習用のディレクトリとファイルを作成してください。
- ~/linuc06-work/ex01ディレクトリを作成する
- 作成したディレクトリへ移動する
- touchを使ってreport.txt、memo.txt、data.txtを作成する
- lsを使って、現在のディレクトリにあるファイルを一覧表示する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex01
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex01
suzuki@AlmaLinux:~/linuc06-work/ex01$ touch report.txt memo.txt data.txt
suzuki@AlmaLinux:~/linuc06-work/ex01$ ls
data.txt memo.txt report.txt解説
引数を指定せずにlsを実行すると、現在いるディレクトリの内容が表示されます。
touchには3つのファイル名を指定しているため、report.txt、memo.txt、data.txtが作成されます。lsの表示順序は、基本的に現在のロケールに基づく名前順です。
演習02:lsコマンド(隠しファイルを含む詳細表示)
問題
次の手順で演習用ファイルを作成し、隠しファイルを含む詳しい一覧を表示してください。
- ~/linuc06-work/ex02ディレクトリを作成する
- 作成したディレクトリへ移動する
- touchを使ってreport.txtと.configを作成する
- ls -laを使って一覧を表示する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex02
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex02
suzuki@AlmaLinux:~/linuc06-work/ex02$ touch report.txt .config
suzuki@AlmaLinux:~/linuc06-work/ex02$ ls -la
合計 0
drwxr-xr-x. 2 suzuki suzuki 39 8月 15 02:10 .
drwxr-xr-x. 4 suzuki suzuki 32 8月 15 02:10 ..
-rw-r--r--. 1 suzuki suzuki 0 8月 15 02:10 .config
-rw-r--r--. 1 suzuki suzuki 0 8月 15 02:10 report.txt解説
先頭が.のファイルは隠しファイルとして扱われ、通常のlsでは表示されません。
-aを指定すると、.configだけでなく、現在のディレクトリを表す.と、1つ上のディレクトリを表す..も表示されます。-lによってパーミッション、所有者、ファイルサイズ、更新日時なども確認できます。
演習03:touchコマンド(複数ファイルの作成)
問題
次の手順で3つの空ファイルを作成し、詳しい情報を表示してください。
- ~/linuc06-work/ex03ディレクトリを作成する
- 作成したディレクトリへ移動する
- touchを使ってmemo1.txt、memo2.txt、memo3.txtを一度に作成する
- ls -lで作成結果を確認する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex03
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex03
suzuki@AlmaLinux:~/linuc06-work/ex03$ touch memo1.txt memo2.txt memo3.txt
suzuki@AlmaLinux:~/linuc06-work/ex03$ ls -l
合計 0
-rw-r--r--. 1 suzuki suzuki 0 8月 15 02:15 memo1.txt
-rw-r--r--. 1 suzuki suzuki 0 8月 15 02:15 memo2.txt
-rw-r--r--. 1 suzuki suzuki 0 8月 15 02:15 memo3.txt解説
touchには複数のファイル名を指定できます。存在しないファイル名を指定したため、内容が空のファイルが3つ作成されます。
ls -lのファイルサイズが0になっていることから、内容が空であることを確認できます。
演習04:touchコマンド(タイムスタンプの指定)
問題
次の手順で、指定した日時を持つファイルを作成してください。
- ~/linuc06-work/ex04ディレクトリを作成する
- 作成したディレクトリへ移動する
- touch -tを使って、report.txtのタイムスタンプを2026年8月15日9時30分に設定する
- ls -l --time-style=long-isoで日時を確認する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex04
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex04
suzuki@AlmaLinux:~/linuc06-work/ex04$ touch -t 202608150930 report.txt
suzuki@AlmaLinux:~/linuc06-work/ex04$ ls -l --time-style=long-iso report.txt
-rw-r--r--. 1 suzuki suzuki 0 2026-08-15 09:30 report.txt解説
202608150930は、次のように読み取ります。
- 2026が年
- 08が月
- 15が日
- 09が時
- 30が分
report.txtが存在しない場合でも、新しい空ファイルが作成され、指定したタイムスタンプが設定されます。
演習05:ワイルドカード(*によるファイル指定)
問題
次の手順で演習用ファイルを作成し、reportで始まり.txtで終わるファイルだけを表示してください。
- ~/linuc06-work/ex05ディレクトリを作成する
- 作成したディレクトリへ移動する
- report.txt、report1.txt、report12.txt、memo.txtを作成する
- *を使って、reportで始まり.txtで終わるファイルを表示する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex05
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex05
suzuki@AlmaLinux:~/linuc06-work/ex05$ touch report.txt report1.txt report12.txt memo.txt
suzuki@AlmaLinux:~/linuc06-work/ex05$ ls report*.txt
report.txt report1.txt report12.txt解説
*は0文字以上の任意の文字に一致します。
そのため、次のすべてが対象になります。
- report.txtはreportと.txtの間が0文字
- report1.txtは間が1文字
- report12.txtは間が2文字
memo.txtはreportで始まっていないため対象外です。
演習06:ワイルドカード(?による1文字指定)
問題
次の手順で演習用ファイルを作成し、reportと.txtの間にちょうど1文字だけあるファイルを表示してください。
- ~/linuc06-work/ex06ディレクトリを作成する
- 作成したディレクトリへ移動する
- report.txt、report1.txt、report2.txt、report12.txtを作成する
- ?を使って対象のファイルを表示する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex06
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex06
suzuki@AlmaLinux:~/linuc06-work/ex06$ touch report.txt report1.txt report2.txt report12.txt
suzuki@AlmaLinux:~/linuc06-work/ex06$ ls report?.txt
report1.txt report2.txt解説
?は任意の1文字に一致します。
report1.txtとreport2.txtは、reportと.txtの間に1文字だけあるため一致します。
report.txtは間が0文字、report12.txtは間が2文字なので対象外です。
演習07:ワイルドカード(文字範囲による指定)
問題
次の手順で演習用ファイルを作成し、番号が1から3までのファイルだけを表示してください。
- ~/linuc06-work/ex07ディレクトリを作成する
- 作成したディレクトリへ移動する
- file1.txt、file2.txt、file3.txt、file4.txt、fileA.txtを作成する
- [1-3]を使って対象のファイルを表示する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex07
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex07
suzuki@AlmaLinux:~/linuc06-work/ex07$ touch file1.txt file2.txt file3.txt file4.txt fileA.txt
suzuki@AlmaLinux:~/linuc06-work/ex07$ ls file[1-3].txt
file1.txt file2.txt file3.txt解説
[1-3]は、指定した位置に1、2、3のいずれか1文字があるファイル名に一致します。
file4.txtは範囲外であり、fileA.txtは数字ではないため対象外です。
演習08:ブレース展開(連続するファイル名の作成)
問題
次の手順で、report1.txtからreport5.txtまでの5つのファイルを作成してください。
- ~/linuc06-work/ex08ディレクトリを作成する
- 作成したディレクトリへ移動する
- ブレース展開とtouchを使って、5つのファイルを1回の操作で作成する
- lsで作成結果を確認する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex08
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex08
suzuki@AlmaLinux:~/linuc06-work/ex08$ touch report{1..5}.txt
suzuki@AlmaLinux:~/linuc06-work/ex08$ ls
report1.txt report2.txt report3.txt report4.txt report5.txt解説
Bashはreport{1..5}.txtを次の5つの文字列へ展開します。
report1.txt
report2.txt
report3.txt
report4.txt
report5.txt展開された5つのファイル名がtouchへ渡されるため、1回のコマンド入力で5つのファイルを作成できます。
演習09:ブレース展開とワイルドカードの組み合わせ
問題
次の手順で演習用ファイルを作成し、report1またはreport2で始まる.txtファイルだけを表示してください。
- ~/linuc06-work/ex09ディレクトリを作成する
- 作成したディレクトリへ移動する
- report1.txt、report12.txt、report2.txt、report21.txt、report3.txtを作成する
- ブレース展開と*を組み合わせて対象のファイルを表示する
模範解答例
suzuki@AlmaLinux:~$ mkdir -p ~/linuc06-work/ex09
suzuki@AlmaLinux:~$ cd ~/linuc06-work/ex09
suzuki@AlmaLinux:~/linuc06-work/ex09$ touch report1.txt report12.txt report2.txt report21.txt report3.txt
suzuki@AlmaLinux:~/linuc06-work/ex09$ ls report{1,2}*.txt
report1.txt report12.txt report2.txt report21.txt解説
最初にブレース展開が行われ、次の2つのパターンが作られます。
report1*.txt
report2*.txtその後、*によるワイルドカード展開が行われます。
- report1*.txtはreport1.txtとreport12.txtに一致する
- report2*.txtはreport2.txtとreport21.txtに一致する
- report3.txtはどちらのパターンにも一致しない
このように、ブレース展開で複数のパターンを作り、それぞれにワイルドカードを適用できます。
まとめ
LinuCコマンド演習06では、lsによるファイル一覧の表示、touchによる空ファイルの作成とタイムスタンプの設定、ワイルドカードによる既存ファイルのパターン指定、ブレース展開による複数文字列の生成を演習しました。特に、ワイルドカードは既存のファイル名を検索し、ブレース展開はファイルの存在に関係なく文字列を生成するという違いが大切です。touchで練習用ファイルを作成し、ワイルドカードやブレース展開で対象を指定し、lsで結果を確認する流れを繰り返すと、ファイル操作の基本がしっかり身に付きます。
