シェルスクリプトとは?
シェルスクリプトは、シェルコマンドを記述したテキストファイルです。複数のコマンドを組み合わせて、自動化されたタスクを実行できます。
なぜシェルスクリプトを学ぶのか?
- 作業の自動化: 繰り返し行う作業を自動化できる
- 効率化: 複雑な処理を簡単に実行できる
- 再利用性: 一度作成すれば何度でも使える
- 保守性: 処理内容を文書化できる
最初のシェルスクリプト
Hello Worldスクリプトの作成
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
スクリプトの構成要素
#!/bin/bash
# これはコメントです
echo "Hello World"
- シバン(Shebang):
#!/bin/bash
- 使用するシェルを指定 - コメント:
#
で始まる行は実行されない - コマンド: 実行したいシェルコマンド
スクリプトの実行方法
方法1: bashコマンドで実行
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
方法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
シバン(Shebang)の重要性
異なるシェルの指定
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
シバンの書き方
#!/bin/bash # Bashを使用
#!/bin/sh # POSIXシェルを使用
#!/usr/bin/env bash # 環境変数PATHからbashを探す(推奨)
#!/usr/bin/python3 # Pythonスクリプトの場合
実践的な例
システム情報を表示するスクリプト
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
ファイルバックアップスクリプト
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. 明確なコメントを書く
#!/bin/bash
#
# Script: backup_daily.sh
# Purpose: Daily backup of important files
# Author: Your Name
# Date: 2024-01-15
#
# Main backup function
backup_files() {
# Implementation here
echo "Backing up files..."
}
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
3. 変数名は分かりやすく
# 良い例
USER_HOME="/home/user"
BACKUP_DIR="/backup"
LOG_FILE="/var/log/myapp.log"
# 悪い例
a="/home/user"
b="/backup"
c="/var/log/myapp.log"
演習問題
演習1: 現在時刻を表示するスクリプト
現在の日時を異なる形式で表示するスクリプトを作成してください。
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
演習2: ディレクトリ作成スクリプト
指定した名前のディレクトリを作成し、その中に3つのファイルを作成するスクリプトを書いてください。
まとめ
このレッスンで学んだこと:
- シェルスクリプトの基本概念 - 自動化のための強力なツール
- スクリプトの作成方法 - テキストファイルにコマンドを記述
- シバンの重要性 - 適切なインタープリタの指定
- 実行方法 - bashコマンドまたは実行権限を付与
- ベストプラクティス - 読みやすく保守しやすいスクリプトの書き方
次のレッスンでは、変数と環境変数について詳しく学習します。