関連記事
シェルスクリプトとは?
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
シェルスクリプトとは?
結論から先に言うと
シェルスクリプトというのは、OSに対して実行したい一連のコマンド(命令)が並べて書かれているファイルのことです。
僕たちが普段使う、WindowsやMac OSは「GUI(Graphical User Interface)」といって、マウスでの操作が基本となりますが、サーバー等で使われているUNIX系のOSでは「CUI(Character User Interface)」といって、1つ1つの操作を黒い画面にコマンドを入力して行うのが基本となります。
例えば、ファイルの内容を閲覧したり、フォルダ(ディレクトリ)の中に移動したり、ファイルを削除したり、誰かにメールを送信したり、といった1つ1つの操作が「コマンド」として用意されています。
コマンド入力でコンピューターを操作しているイメージがよく分からないという方は、Hacknetの動画などを見てみてくださいね。
ハッキング・シミュレーターゲーム「Hacknet」をやってみた
この、ユーザーからのコマンド入力を受け付けて、OSに対して実際に命令を実行しているプログラムを「シェル」といいます。
コンピューターとユーザーの間にある「殻(shell)」のようなものなので、このように呼ばれています。
そして、シェルスクリプトの「スクリプト」は「台本」という意味であり、シェルに対して実行したい一連のコマンドを台本のように羅列したファイルなんです。
例えば、
①今日の日付のディレクトリを作成して
②データベースから最新のデータをバックアップする命令を実行して
③バックアップされたデータを①で作成したディレクトリに保存して
④処理結果を管理者にメールでお知らせする
このような一連の処理をシェルスクリプトとして作成しておけば、そのシェルスクリプトファイルを実行するだけで、一連の処理が実行されるので便利です。
シェルスクリプトの作成方法
シェルスクリプトはテキストデータなので、テキストエディタで作成・編集することができます。
1行目の部分は「シェルスクリプトであること」を明示しています。
ちなみに、シェルにはいくつかの種類があり、この部分はOSのシェルに合った指定を行います。
そして、その後に実行したい一連のコマンドを順番に書いていきます。
書いた順番に上から実行されていきます。
書けたら「.sh」という拡張子を付けて保存し、ファイルに実行権限を付けてあげればシェルスクリプトは完成です。
あとは、このスクリプトファイルを実行するだけで、記述したコマンドが上から順番に自動実行されます。
なお、シェルスクリプトでは、「変数」や「配列」、「条件分岐」や「ループ」といった、簡単なプログラミングの制御構造も使うことができます。
例えば、赤枠のように書くと配列変数を定義することができ、この配列をforでループしながら、チェック処理を行い(青枠)、チェック結果に応じてif文で次に行う処理を分岐する(黄枠)。
このような感じで、ただコマンドを羅列するだけでなく、ループや条件分岐によって細かい処理を行うことも可能です。
なお、シェルスクリプトでは「#」を先頭に書くと「コメント」になります。
シェルスクリプトの活用例
このように、シェルスクリプトを作っておけば、一連のコマンドをまとめて実行することができるため、定期的に行う作業などは、毎回1つ1つコマンドを打って実行するよりも、作業を単純化することができます。
例えば、
サーバーの定期的なバージョンアップ作業
SSL証明書の更新作業
定期的なバックアップ作業
内部プロセスやリソースのチェック
不要なファイルやディレクトリの定期的な削除
こういったものは、シェルスクリプトを書いておけば、作業が楽になりますね。
さらに、CRONと併用することにより、CRONからシェルスクリプトを定期的に自動実行させるようにしておけば、作業を完全に自動化することも可能です。
実際、僕もサーバーをいくつも運用していますが、こういった作業は自動化しており、何か問題が起こった場合だけ手を動かして作業しています。
シェルスクリプトは、通常のプログラミング言語のように複雑な処理は行えないため、アプリを作ったりすることはできませんが、こういった定期的に行う作業や複雑な手順の作業などをスクリプト化しておくことで、作業時間の短縮や人為的なミスの軽減に役立ちますので是非活用していきましょう!
まとめ
・シェルスクリプトとは、OSに対して実行したい一連のコマンドが書かれたファイルのこと
・書いたコマンドが上から順番に実行される
・変数、条件分岐、ループといった制御構造を使うことも可能
・CRONと組み合わせて作業を自動化することも可能