0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シェルスクリプト(.sh)の作成から実行まで

Posted at

はじめに

ターミナルでの作業を自動化したいけど、シェルスクリプトって何?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 + XYEnter
  • 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 のようになり、実行権限が付与される

なぜ実行権限が必要?

  1. セキュリティ: うっかり危険なファイルを実行することを防ぐ
  2. 意図の明確化: 「これは実行可能なプログラム」であることを明示
  3. システムの保護: テキストファイルと実行ファイルを区別

権限なしで実行しようとすると

./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での定期実行設定

参考リンク


この記事が参考になったら、いいねやコメントをお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?