メインコンテンツへスキップ
レッスン 10 / 10推定時間: 30

総合演習

これまで学んだコマンドを組み合わせて、実践的な課題に挑戦します

このレッスンの学習目標

  • 複数のコマンドを組み合わせて使える
  • 実践的な問題を解決できる
  • 効率的なコマンドラインの使い方を身につける
  • 学習内容を総復習する

はじめに

このレッスンでは、これまで学んだすべてのコマンドを使って、実践的な課題に取り組みます。各演習では複数の解法がありますので、自分なりの方法で挑戦してみてください。

演習1:プロジェクト構造の作成

新しいWebプロジェクトの基本構造を作成してみましょう。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

課題

以下の構造を持つプロジェクトを作成してください:

mywebapp/
├── src/
│   ├── components/
│   │   ├── Header.js
│   │   └── Footer.js
│   ├── styles/
│   │   └── main.css
│   └── index.js
├── public/
│   ├── index.html
│   └── images/
├── tests/
├── docs/
│   └── README.md
└── .gitignore

ヒント:

  • mkdir -pで階層的なディレクトリを作成
  • touchで複数のファイルを一度に作成
  • treeコマンドがあれば構造を確認(なければls -R

解答例:

# プロジェクトディレクトリ作成
mkdir -p mywebapp/{src/{components,styles},public/images,tests,docs}

# ファイル作成
cd mywebapp
touch src/components/{Header.js,Footer.js}
touch src/styles/main.css src/index.js
touch public/index.html
touch docs/README.md .gitignore

# 構造確認
ls -la
find . -type f

演習2:ログファイルの分析

システムログから特定の情報を抽出して分析します。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

課題

  1. エラーメッセージの数をカウント
  2. 各ログレベル(ERROR, WARNING, INFO)の出現回数を表示
  3. 重複するエラーメッセージを見つけて、その回数を表示
  4. ログファイルを日付付きでバックアップ

ヒント:

  • grepでパターン検索
  • sortuniq -cで重複カウント
  • dateコマンドで現在日時を取得

解答例:

# 1. エラー数をカウント
grep ERROR system.log | wc -l

# 2. 各ログレベルの出現回数
grep -o "^[A-Z]*:" system.log | sort | uniq -c

# 3. 重複エラーの確認
grep ERROR system.log | sort | uniq -c | sort -nr

# 4. バックアップ作成
cp system.log system_$(date +%Y%m%d_%H%M%S).log

演習3:ファイルの整理と権限設定

散らばったファイルを整理して、適切な権限を設定します。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

課題

  1. ファイルを種類別にディレクトリに整理
    • テキストファイル → documents/
    • 画像ファイル → images/
    • スクリプト → scripts/
    • その他 → misc/
  2. スクリプトファイルに実行権限を付与
  3. configファイルを所有者のみ読み書き可能に
  4. 整理完了後、ファイル一覧を詳細表示

解答例:

# 1. ディレクトリ作成と整理
mkdir -p {documents,images,scripts,misc}
mv *.txt documents/
mv *.jpg images/
mv *.sh scripts/
mv * misc/ 2>/dev/null

# 2. スクリプトに実行権限
chmod +x scripts/*.sh

# 3. configファイルの権限設定
chmod 600 misc/config.json

# 4. 結果確認
ls -laR

演習4:プロセス管理とシステム監視

実行中のプロセスを管理し、システムリソースを監視します。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

課題

  1. 現在のシェルでバックグラウンドジョブを3つ起動
  2. ジョブの一覧を確認
  3. 2番目のジョブをフォアグラウンドに
  4. すべてのジョブを終了

ヒント:

  • &でバックグラウンド実行
  • jobsでジョブ一覧
  • fgbgでジョブ制御
  • killでプロセス終了

解答例:

# 1. バックグラウンドジョブ起動
sleep 100 &
sleep 200 &
sleep 300 &

# 2. ジョブ確認
jobs

# 3. 2番目をフォアグラウンドに
fg %2
# Ctrl+Z で一時停止
bg %2

# 4. すべて終了
kill %1 %2 %3
# または
jobs -p | xargs kill

演習5:テキスト処理パイプライン

CSVデータを処理して、必要な情報を抽出します。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

課題

  1. Engineering部門の平均給与を計算
  2. 勤続年数5年以上の従業員を給与順で表示
  3. 部門ごとの人数と最高給与を表示
  4. 給与が60000以上の従業員の名前をアルファベット順で表示

ヒント:

  • awkcutでフィールド抽出
  • sort -t',' -kで特定フィールドでソート
  • 数値計算にはawkが便利

解答例:

# 1. Engineering部門の平均給与
grep Engineering employees.csv | cut -d',' -f3 | \
  awk '{sum+=$1; count++} END {print "Average:", sum/count}'

# 2. 勤続5年以上を給与順で
awk -F',' 'NR>1 && $4>=5 {print}' employees.csv | \
  sort -t',' -k3 -nr

# 3. 部門ごとの統計
tail -n +2 employees.csv | \
  awk -F',' '{dept[$2]++; if(sal[$2]<$3) sal[$2]=$3} 
  END {for(d in dept) print d": Count="dept[d]", Max Salary="sal[d]}'

# 4. 給与60000以上の名前
awk -F',' 'NR>1 && $3>=60000 {print $1}' employees.csv | sort

演習6:ファイル検索と一括処理

特定の条件に合うファイルを検索して、一括で処理します。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

課題

  1. projectディレクトリ内のすべてのreport.txtファイルを検索
  2. 2021年のレポートファイルをすべてbackup/にコピー
  3. 空のreport.txtファイルに"No data"と書き込む
  4. ファイルサイズが0より大きいレポートの数をカウント

解答例:

# 1. report.txtを検索
find project -name "report.txt"

# 2. 2021年のファイルをバックアップ
mkdir -p backup
find project/2021 -name "report.txt" -exec cp {} backup/ \;

# 3. 空ファイルに書き込み
find project -name "report.txt" -empty -exec sh -c 'echo "No data" > {}' \;

# 4. サイズが0より大きいファイルをカウント
find project -name "report.txt" -size +0 | wc -l

最終課題:スクリプト作成

これまでの知識を使って、簡単なバックアップスクリプトを作成します。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

課題

backup.shスクリプトを作成して、以下の機能を実装してください:

  1. importantディレクトリを日付付きでバックアップ
  2. バックアップ先:backups/backup_YYYYMMDD/
  3. バックアップ完了後、ファイル数を表示
  4. スクリプトに実行権限を付与して実行

スクリプトの基本構造:

#!/bin/bash
# 変数定義
# ディレクトリ作成
# ファイルコピー
# 結果表示

解答例:

# スクリプト作成
cat > backup.sh << 'EOF'
#!/bin/bash

# 日付を取得
DATE=$(date +%Y%m%d)
BACKUP_DIR="backups/backup_${DATE}"

# バックアップディレクトリ作成
mkdir -p "$BACKUP_DIR"

# ファイルをコピー
cp -r important/* "$BACKUP_DIR/"

# ファイル数をカウント
FILE_COUNT=$(find "$BACKUP_DIR" -type f | wc -l)

# 結果表示
echo "Backup completed!"
echo "Backup location: $BACKUP_DIR"
echo "Total files backed up: $FILE_COUNT"
EOF

# 実行権限付与
chmod +x backup.sh

# 実行
./backup.sh

コース完了おめでとうございます!

Linux基礎マスターコースを完了しました!これまでに学んだコマンドは、Linuxシステムを操作する上での基礎となります。

学習した主なコマンド

  • ナビゲーション: pwd, ls, cd
  • ファイル操作: touch, mkdir, rm, cp, mv
  • 表示: cat, head, tail, less
  • 検索: find, grep
  • プロセス管理: ps, top, kill
  • 権限管理: chmod, chown
  • テキスト処理: echo, sort, uniq, wc

次のステップ

  1. 実際のLinux環境で練習

    • 仮想マシンやWSLをセットアップ
    • 学んだコマンドを日常的に使用
  2. より高度なコマンドを学習

    • sed、awkでの高度なテキスト処理
    • シェルスクリプトの作成
    • システム管理コマンド
  3. 実践的なプロジェクト

    • 自動化スクリプトの作成
    • ログ分析ツールの開発
    • システム監視の実装

🎉 お疲れさまでした!基本的なLinuxコマンドをマスターしました。これからも継続的に練習して、より効率的にLinuxを使いこなせるようになりましょう!

さらに学習を続けるには

素晴らしい学習ペースです!次のレッスンに進むには、無料会員登録をお願いします。無料会員では各コース3レッスンまで学習できます。

無料で続きを学ぶ

各コース3レッスンまで学習可能

学習進捗の自動保存

コース修了証明書の発行