シェルスクリプトは「いつもの手順書」
ターミナル(黒い画面)にコマンドを打つ作業をしていると、だいたい同じ順番で同じコマンドを叩いている自分に気づきます。ファイルを移動して、ビルドして、テストを走らせて……。毎回手で打つのは面倒だし、一つ抜かすと動かない。
そこで、その一連のコマンドをテキストファイルに順番どおり書いておいて、「このファイルを実行して」と一言お願いすれば全部やってくれるようにしたもの。それがシェルスクリプトです。
料理でいうとレシピカードに近い。「野菜を切る/炒める/味付けする」と紙に書いておけば、毎回頭で思い出さなくても、その紙どおりに作れば同じ料理ができる。シェルスクリプトも同じで、一度書いておけば何度でも同じ手順を正確に再現できます。
「シェル」って何のこと?
シェル(shell = 殻)は、人間が打ったコマンドを受け取ってコンピュータに伝えてくれる窓口のプログラムのことです。ターミナルを開いてコマンドを打つとき、その入力を実際に解釈しているのがシェルです。
代表的なものに bash や zsh があります。macOSのターミナルを開くとだいたい zsh、Linuxのサーバーだと bash ということが多い、くらいの理解で最初は十分です。
そのシェルに向けた命令を並べて書いたファイルだから「シェルスクリプト」。拡張子は .sh を付けることが多いです。
実際にどんな見た目なのか
いちばん素朴な例を見てみます。
#!/bin/bash
echo "作業を始めます"
mkdir backup
cp *.txt backup/
echo "完了しました"
やっていることは単純で、メッセージを表示して、backup というフォルダを作り、テキストファイルをそこにコピーして、また表示する。ターミナルに1行ずつ手で打っても同じ結果になりますが、ファイルにまとめておけば一発で済みます。
1行目の #!/bin/bash は「シバン」と呼ばれるおまじないで、「このファイルの中身は bash に読ませてください」という目印です。最初は意味を深く考えず、お作法として書いておけば大丈夫です。
手打ちとスクリプトの違い
手でコマンドを打つ
その場限り。一度きりの確認や、状況を見ながら判断したい作業に向く。ただし手順を忘れる、打ち間違える、他人に共有しづらい。
シェルスクリプトにする
手順がファイルとして残る。誰が実行しても同じ結果になり、後から見直して直せる。繰り返す作業ほど効果が大きい。
実行するときの注意
ファイルを作っただけでは実行できないことがあります。ファイルに「実行してよい」という許可(実行権限)が付いていないと、「Permission denied」と怒られる。これが初心者が最初にぶつかる定番のつまずきです。
その場合は chmod +x ファイル名 で実行権限を付けてから ./ファイル名 で走らせるか、あるいは bash ファイル名 のように、シェルに直接ファイルを渡して実行する方法もあります。
怖いところも正直に
シェルスクリプトは強力な反面、書いた内容をそのまま実行します。人間のように「いや、これはさすがにマズいのでは」と止まってはくれません。ファイルを消すコマンドを書き間違えたまま実行すれば、本当に消えます。
だから、ネットで拾ってきたスクリプトを中身を読まずに実行するのは避けたほうがいい。特にファイルの削除や上書きが絡む処理は、いきなり本番のフォルダで試さず、どうでもいいテスト用フォルダで動かしてみる癖をつけると安心です。
覚えておきたいポイント
- シェルスクリプト = コマンドを実行順に書いたテキストファイル
- 目的は「繰り返す作業を一発で、毎回同じように」やること
- 1行目に
#!/bin/bashのようなシバンを書くのが一般的 - 実行権限がないと動かないので
chmod +xが必要になることがある - 中身を理解していないスクリプトは実行しない
最初は3〜4行のスクリプトで十分です。「毎回これ打ってるな」と思った作業をファイルに写すところから始めると、シェルスクリプトのありがたみがすぐに実感できます。
このページは役に立ちましたか?