第5章:実践演習 - 簡単なスクリプト作成
5.1 はじめてのシェルスクリプト
シェルスクリプトとは?
コマンドを順番に実行するプログラムです。繰り返し作業を自動化できます。
最初のスクリプト: hello.sh
$ nano hello.sh
#!/bin/bash
# これはコメントです
echo "Hello, Linux World!"
echo "今日は $(date) です"
$ chmod +x hello.sh # 実行権限を付与
$ ./hello.sh # 実行
$ ./hello.sh # 実行
Hello, Linux World!
今日は Mon Jan 15 10:30:45 JST 2025 です
今日は Mon Jan 15 10:30:45 JST 2025 です
5.2 実践!バックアップスクリプト
backup.sh - 重要ファイルのバックアップ
#!/bin/bash
# バックアップ元とバックアップ先
SOURCE="$HOME/Documents"
BACKUP_DIR="$HOME/backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_${DATE}.tar.gz"
# バックアップディレクトリ作成
mkdir -p "$BACKUP_DIR"
# バックアップ実行
echo "バックアップを開始します..."
tar -czf "$BACKUP_DIR/$BACKUP_FILE" "$SOURCE" 2>/dev/null
# 結果確認
if [ $? -eq 0 ]; then
echo "✅ バックアップ成功: $BACKUP_FILE"
ls -lh "$BACKUP_DIR/$BACKUP_FILE"
else
echo "❌ バックアップ失敗"
exit 1
fi
# 古いバックアップを削除(7日以上前)
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +7 -delete
echo "7日以上前のバックアップを削除しました"
使い方:
$ chmod +x backup.sh
$ ./backup.sh
$ ./backup.sh
5.3 cronで定期実行
定期バックアップの設定
$ crontab -e
# 毎日午前3時にバックアップ実行
0 3 * * * /home/user/scripts/backup.sh
# 毎週月曜日にシステムレポート作成
0 9 * * 1 /home/user/scripts/sysinfo.sh > /home/user/weekly_report.txt
# 毎月1日に古いログを削除
0 0 1 * * find /home/user/logs -name "*.log" -mtime +30 -delete
cron記法の説明
分 時 日 月 曜日 コマンド * * * * * command 例: */5 * * * * 5分ごと 0 */2 * * * 2時間ごと 0 9-17 * * 1-5 平日9-17時の毎時0分
5.4 学習のまとめ
🎯 この章で学んだこと
- シェルスクリプトの基本構造(#!/bin/bash)
- 変数の定義と使用方法
- 条件分岐(if文)による処理制御
- コマンド置換($(command))の活用
- cronによる定期実行の設定
📚 次のステップ
- ループ処理(for, while文)の学習
- 関数の定義と活用
- より複雑な条件分岐(case文)
- エラーハンドリングの実装
💡 スクリプト作成のコツ
- 小さく始める:まず簡単な処理から作る
- コメントを書く:後で見返した時のために
- エラー処理を入れる:想定外の状況に備える
- テストする:本番前に必ずテスト環境で実行
- バージョン管理:gitなどで管理する
⚠️ セキュリティの注意点
- パスワードをスクリプトに直接書かない
- 実行権限は必要最小限に
- 入力値の検証を行う
- rm -rf などの危険なコマンドは慎重に