はじめに
ターミナルでの作業を自動化したいけど、シェルスクリプトって何?chmod +xって何をしているの?という疑問を持つ方向けに、基本的な概念から実際の設定方法まで解説します。
シェルスクリプトとは
シェルスクリプトは、ターミナル(コマンドライン)で実行するコマンドを自動化するためのプログラムファイルです。
簡単な例
#!/bin/bash
# 簡単なシェルスクリプトの例
echo "Hello, World!"
echo "現在の日時: $(date)"
echo "現在のディレクトリ: $(pwd)"
.sh拡張子とは
.shは「Shell Script」の略で、シェル(ターミナル)で実行できるスクリプトファイルの拡張子です。
- シェルスクリプト: ターミナルコマンドを自動化するためのプログラム
-
bash: 最も一般的なシェルの種類(
#!/bin/bash
がその指定) - 複数のコマンドを順番に実行したり、条件分岐やループ処理が可能
セットアップ手順
1. スクリプトファイルを作成
nano hello.sh
または、お好みのエディタを使用:
vim hello.sh
# または
code hello.sh # VS Codeがある場合
2. スクリプトの内容を記述
エディタで以下のような内容を記述:
#!/bin/bash
# コメント: このスクリプトの説明
echo "スクリプトが実行されました!"
3. ファイルを保存
-
nano
の場合:Ctrl + X
、Y
、Enter
-
vim
の場合::wq
4. 実行権限を付与(重要!)
chmod +x hello.sh
5. スクリプトを実行
./hello.sh
chmod +x の詳細解説
ファイル権限システム
Linuxシステム(macOSも含む)では、すべてのファイルに「権限」が設定されています。
ls -l hello.sh
実行結果例(権限付与前):
-rw-r--r-- 1 username staff 123 Aug 8 10:30 hello.sh
実行結果例(権限付与後):
-rwxr-xr-x 1 username staff 123 Aug 8 10:30 hello.sh
権限の読み方
文字 | 意味 | 説明 |
---|---|---|
- | ファイルタイプ |
- =通常ファイル、d =ディレクトリ |
rw- | 所有者権限 |
r =読み取り、w =書き込み、- =実行不可 |
r-- | グループ権限 |
r =読み取り、- =書き込み不可、- =実行不可 |
r-- | その他権限 |
r =読み取り、- =書き込み不可、- =実行不可 |
chmod コマンドの意味
chmod +x hello.sh
- chmod: 「change mode」の略、権限を変更するコマンド
- +x: 実行権限(executable)を追加
-
結果:
-rwxr-xr-x
のようになり、実行権限が付与される
なぜ実行権限が必要?
- セキュリティ: うっかり危険なファイルを実行することを防ぐ
- 意図の明確化: 「これは実行可能なプログラム」であることを明示
- システムの保護: テキストファイルと実行ファイルを区別
権限なしで実行しようとすると
./hello.sh
# エラー: Permission denied
権限ありで実行すると
./hello.sh
# スクリプトが実行されました!
シェルスクリプトの基本構文
変数の使用
#!/bin/bash
NAME="太郎"
echo "こんにちは、${NAME}さん!"
コマンドライン引数
#!/bin/bash
echo "第1引数: $1"
echo "第2引数: $2"
echo "全引数: $@"
実行例:
./script.sh hello world
# 第1引数: hello
# 第2引数: world
# 全引数: hello world
条件分岐
#!/bin/bash
if [ "$1" = "hello" ]; then
echo "挨拶を受け取りました!"
else
echo "何か別の言葉ですね"
fi
ループ処理
#!/bin/bash
for i in {1..5}; do
echo "カウント: $i"
done
よくあるエラーと対処法
1. Permission denied
原因: 実行権限が付与されていない
対処法: chmod +x script.sh
2. command not found
原因: パスの指定が間違っている
対処法: ./script.sh
(先頭に./
を付ける)
3. No such file or directory
原因: ファイル名やパスが間違っている
対処法: ls
でファイルの存在を確認
実用的な活用例
- 定期的なバックアップの自動化
- 複数のサーバーへの一括デプロイ
- ログファイルの整理・圧縮
- 開発環境のセットアップ自動化
- システム監視とアラート
まとめ
- .shファイル = シェルで実行する自動化スクリプト
- chmod +x = ファイルに実行権限を付与する重要なステップ
- シェルスクリプト = 複雑な操作を1つのコマンドで実行可能にする便利なツール
これで、ターミナル作業の自動化への第一歩が踏み出せました!
次のステップ
- より複雑な条件分岐やループを学ぶ
- エラーハンドリングの実装
- 他のユーザーとスクリプトを共有する方法
- crontabでの定期実行設定
参考リンク
この記事が参考になったら、いいねやコメントをお願いします!