UNIX Cafe シェルスクリプト実例集 🚀

当ページのリンクには広告が含まれています。
UNIX Cafe シェルスクリプト実例集

このページは、UNIX Cafeで登場した“すぐ使える”スクリプトをカテゴリー別にまとめた実例集です。
Linux / macOS の違いに配慮しながら、自動化・バックアップ・ログ監視・通知をやさしく実践できます。

使い方:コードをコピー → 自分のユーザー名とパスに書き換え → 保存 → chmod +xで実行権限を付与 → テスト実行 → 必要なら cron に登録。

目次

このページの内容

  1. 自動化(cron)
  2. バックアップ(tar / gzip)
  3. 差分バックアップ(rsync)
  4. ログ監視と通知(grep + mailx / osascript)
  5. ユーティリティTips(権限・shebang・安全設定)

1. 自動化(cron)

“毎朝のルーティン”を自動化。まずは開店ログを残す open_cafe.sh です。

Linux版:open_cafe.sh

#!/bin/bash
# ☕ UNIX Café|open_cafe.sh(Linux)
LOGFILE="/home/username/unix_cafe/cafe_log.txt"

/bin/echo "🌅 $(/bin/date '+%Y-%m-%d %H:%M:%S') カフェを開けます☕" >> "$LOGFILE"
/bin/echo "☕ 今日も元気にスタート!" >> "$LOGFILE"
/bin/echo "-----------------------------" >> "$LOGFILE"

/bin/echo "🌞 おはようございます!カフェをオープンしました!"
/bin/echo "ログに開店記録を残しました☕"

macOS版:open_cafe.sh

#!/bin/bash
# ☕ UNIX Café|open_cafe.sh(macOS)
LOGFILE="/Users/username/unix_cafe/cafe_log.txt"

echo "🌅 $(date '+%Y-%m-%d %H:%M:%S') カフェを開けます☕" >> "$LOGFILE"
echo "☕ 今日も元気にスタート!" >> "$LOGFILE"
echo "-----------------------------" >> "$LOGFILE"

echo "🌞 おはようございます!カフェをオープンしました!"
echo "ログに開店記録を残しました☕"

権限付与:chmod +x /home/username/unix_cafe/open_cafe.sh(macOSは /Users/username/…

cron登録:crontab -e0 7 * * * /home/username/unix_cafe/open_cafe.sh

詳しくは:第14回|cronと自動実行編

2. バックアップ(tar / gzip)

ファイルをまとめて“1箱に”。日次バックアップの基本スクリプトです。

backup_daily.sh(Linux / macOS共通)

#!/bin/bash
# ☕ UNIX Café|backup_daily.sh(共通)
set -euo pipefail

TARGET_DIR="$HOME/projects"      # バックアップ対象
DEST_DIR="$HOME/backups"         # 保存先
DATE="$(date '+%Y-%m-%d')"
ARCHIVE="project_${DATE}.tar"
ARCHIVE_GZ="${ARCHIVE}.gz"

mkdir -p "$DEST_DIR"
# 1) まとめる(tar)
tar cvf "${DEST_DIR}/${ARCHIVE}" -C "$TARGET_DIR" .
# 2) 圧縮する(gzip)
gzip -f "${DEST_DIR}/${ARCHIVE}"

echo "📦 バックアップ完了: ${DEST_DIR}/${ARCHIVE_GZ}"

cron例(毎晩22:00):0 22 * * * /home/username/unix_cafe/backup_daily.sh >> /home/username/unix_cafe/backup.log 2>&1

詳しくは:第17回|バックアップとアーカイブ編

3. 差分バックアップ(rsync)

更新分だけコピーして高速・省容量に。まずは安全なドライランから。

ドライラン(テスト)

rsync -av --delete --dry-run --exclude=".git" "$HOME/projects/" "$HOME/sync_backup/projects/"

実行(本番)

rsync -av --delete --exclude=".git" "$HOME/projects/" "$HOME/sync_backup/projects/"

ポイント:--dry-runで差分を確認 → 問題なければ外す。--deleteは“消し込み”なので慎重に。

参考回:第17回|バックアップとアーカイブ編

4. ログ監視と通知(grep + mailx / osascript)

エラー文字列を見つけたら“知らせる”。Linuxはmailx、macOSは通知センターが手軽です。

Linux:error_check.sh + mailx

#!/bin/bash
# ☕ UNIX Café|error_check.sh(Linux)
set -euo pipefail

LOG="/var/log/syslog"
if /bin/grep -i "error" "$LOG" > /tmp/error_lines.txt; then
  /usr/bin/mailx -s "【UNIX Café】エラー検知" user@example.com < /tmp/error_lines.txt
fi

注:mailxはMTA(postfix/sendmail等)の設定が必要です。環境に応じて導入・設定してください。

macOS:通知センター(osascript)

#!/bin/bash
# ☕ UNIX Café|error_check_mac.sh(macOS)
set -euo pipefail

LOG="$HOME/unix_cafe/app.log"
if /usr/bin/grep -i "error" "$LOG" > /dev/null; then
  /usr/bin/osascript -e 'display notification "ログにERRORを検出しました" with title "UNIX Café"'
fi

cron例(毎晩22:00)

0 22 * * * /Users/username/unix_cafe/error_check_mac.sh >> /Users/username/unix_cafe/notify.log 2>&1

関連回:第15回|ログ管理とレポート編  第16回|ログ分析と通知編

5. ユーティリティTips

ミナちゃん

コマンドって、ちょっとしたひと工夫で味が変わるんですね。

  • 実行権限:chmod +x script.sh(実行できない時はまずこれ)
  • ポータブルshebang:#!/usr/bin/env bash(環境差を吸収)
  • 安全運転:set -euo pipefail(エラーで止め、未定義を禁止、パイプエラー検知)
  • 絶対パス:cron実行では /bin/echo などフルパス指定が安全
  • ログ分離:>> logfile 2>&1(標準出力とエラーをまとめる)
ユニ先生

このTipsは、まるでラテにシナモンをひと振りするみたいな“隠し味”だね☕

第14回|cronと自動実行編  第17回|バックアップとアーカイブ編学習マップへ

まとめ☕

ミナちゃん

「毎日少しずつ」触るのが、上達への近道です。気に入ったスクリプトからMy環境に合わせて育てていきましょう。

👉 次は、特集:人気コマンドTOP10 もどうぞ。

目次