シェルスクリプトとは?使用例やできること、使うための方法
シェルスクリプトの基本知識から、使用例やできること、使うための方法について解説します。
シェルスクリプトの基本知識から、使用例やできること、使うための方法について解説します。
スキルアップ
2023/02/27 UP
- プログラミング
- SE資格・スキル
- できること
シェルスクリプトはLinuxやUnixに触れる際には必ず覚えておきたいものの一つです。シェルスクリプトはプログラミング言語に似ていますが、その違いについて気になる方も多いのではないでしょうか。
この記事では、シェルスクリプトの基本知識から、使用例やできること、使うための方法について解説します。
シェルスクリプトとは?
はじめに、シェルスクリプトの基本知識として、シェルスクリプトの概要や種類、利用する意味について見ていきましょう。
シェルがまとめられた台本
シェルスクリプトは、シェルによる操作(解釈・実行)がまとめられた台本・手順書(スクリプト)と考えるとよいでしょう。
シェルはユーザーからの操作を受け付け、動作した結果を出力するプログラムです。LinuxやUnixでは、原則コマンド入力によるOS操作を行ないますが、その際に入力するコマンドはシェルによって解釈・実行されて結果が表示されています。
例えば、lsコマンドを入力すればディレクトリの内容が結果として表示されます。その他にも、ディレクトリを移動するcdコマンドや、ディスク容量などを確認するdfコマンドなどが存在しますが、これらをひとまとまりにして実行するものがシェルスクリプトです。
シェルの種類
シェルと一言でいっても、その種類はさまざまです。一般的に利用されるシェルについて以下に簡単にまとめました。
シェルの系統 | シェル名 |
---|---|
Bシェル系 | sh |
bash | |
ksh | |
Cシェル系 | csh |
tcsh | |
− | zsh |
おもにBシェル系とCシェル系に分かれており、zshは両者の中間に位置する存在です。Bシェル系のshはUnix標準のシェルであり、Linuxではbashが標準搭載されています。Cシェル系はBシェル系のshをもとにC言語風にアレンジしたものであり、Bシェル系よりも高機能化したものと考えるとよいでしょう。
基本的には各シェルの文法などには大きな違いがないことから、Linuxに標準搭載されており、最も利用頻度の高いbashから覚えることを推奨します。
シェルスクリプトを使う意味
LinuxやUnixでは、基本的に文字入力によってOSを操作します。CUIと呼ばれる文字ベースのインタフェースが標準であり、Windowsのような画面操作(GUI)ではありません。
シェルスクリプトを使わずとも、シェルを一つひとつ入力することでOSを操作することは可能です。しかし、より複雑な処理や繰り返し処理が必要になる場合には、一つひとつ入力していると非常に煩雑になってしまいます。
そこで、シェルスクリプトを利用して複雑な処理や繰り返し処理を事前に定義しておくことで、効率的にLinuxやUnixのOS操作やソフトウェア操作を実現します。
シェルスクリプトは、より簡潔かつ便利にLinuxやUnixを利用する上で欠かせない存在です。
シェルスクリプトの使用例、できること
ここでは、シェルスクリプトを使用することで、具体的にどのようなことが実現できるのかを具体例を交えて解説します。
cronなどと組み合わせ、定例作業を自動化
cronはUnix系OSでスケジュールにしたがって、プログラムを自動実行するためのプログラムです。Windowsでいうところのタスクスケジューラに該当します。
cronを利用すれば、分・時間・日・月・曜日単位で自動的に実行するプログラムを簡単に設定できます。例えば、毎日12時に実行したい、毎月1日に実行したい、といった繰り返しの定例作業を設定可能です。
cronで実行するプログラムにシェルスクリプトを設定しておけば、シェルスクリプトで具体的な処理内容を記載することで、自由に定例作業を自動化できます。
データ抽出作業
LinuxやUnixを操作する上では、ログファイルやデータの出力結果から必要な情報を抜き出すデータ抽出作業を必要とする機会は多くなります。その際には、特定の文字列を含む情報を出力するgrepコマンドが利用できますが、複雑な処理を実現するためには何度も入力しなければなりません。
その際のデータを抽出するための手順をシェルスクリプトに記載しておけば、シェルスクリプトを実行するだけで求める結果が得られます。
例えば、ログファイルから“前日の情報”かつ“○○○が含まれる情報”かつ“△△△が含まれない情報”を抽出したい場合、パイプなどでコマンドをつなぐ方法もありますが、シェルスクリプトに記載しておき、1回の実行でデータ抽出を実施することもできます。
ソフトウェア、プログラミング言語と組み合わせた業務効率化
シェルスクリプトはOS操作のコマンドだけでなく、ソフトウェアの起動や停止、再起動などでも利用されます。JavaやRuby、Pythonなどとのプログラミング言語と組み合わせて利用することも可能であり、上手に使えば業務の効率化が期待できるでしょう。
例えば、サービスを提供するために必要な複数のプロセスを適切な順番で起動・停止しなければならない場合、一つずつコマンド入力していると順番を間違える可能性も考えられます。起動や停止のシェルスクリプトを事前に作成しておけば、そのようなミスも減らせます。
また、プログラミング言語で作成されたツールからシェルスクリプトを呼び出し、煩雑な作業をシェルスクリプトで一括実行できるようにすれば、業務の効率化が実現可能です。
シェルスクリプトを使う方法
最後に、シェルスクリプトを使う方法としてシェルスクリプトの作り方から実行方法までを簡潔に紹介します。もっと詳しくシェルスクリプトの書き方について知りたい方は、“【ソースコード有】シェルスクリプト入門 - 構文や書き方、使い方について解説” を御覧ください。
シェルスクリプトの実行ファイルを作成する
シェルスクリプトの基本文法さえ知っていれば、実行ファイルを作成することは簡単です。Unix系OSではviなどのエディタを使って実行ファイルを作成してください。
シェルスクリプトの例
#!/bin/bash
echo "Hello World" > ./hello.txt
ls -l ./hello.txt
cat ./hello.txt
シェルスクリプトの基本文法として、先頭行の“#!/bin/bash”が必須であることを覚えておきましょう。これはシバンと呼ばれる文字列であり、このシェルスクリプトがbashによって解釈・実行されることを宣言するためのものです。
以降は、必要な処理を記載しており、この例ではhello.txtに文字列を書き込み、ファイルの確認と内容を出力しています。
このように、シェルスクリプトの実行ファイルは簡単に作成することができます。
シェルスクリプトに実行権限を与える
作成したシェルスクリプトは、bashコマンドなどで実行可能です。
$ bash ./シェルスクリプト名
そのままでも実行できますが、実行権限を与えてコマンドとして実行することが一般的です。
$ ./シェルスクリプト名
実行権限を与えることでコマンドとして実行できるようになるため、他のファイルとの差別化や、他のシェルスクリプトからの呼び出しなども簡潔に行なえるようになります。
実行権限を与える際には、chmodコマンドを使って次のように入力します。
$ chmod +x シェルスクリプト名
または
$ chmod 755 シェルスクリプト名
など
実行権限についても、“【ソースコード有】シェルスクリプト入門 - 構文や書き方、使い方について解説” で詳しく解説していますので、こちらをご覧ください。
シェルスクリプトはLinuxやUnixを利用するうえで欠かせない!
シェルスクリプトは、シェルによる操作がまとめられた台本・手順書です。シェルにはさまざまな種類が存在しますが、いずれのシェルでもシェルスクリプトを作成できます。
シェルスクリプトを利用することで、複雑な処理や繰り返し処理を簡単に実現できるようになり、LinuxやUnixで効率的にOSやソフトウェアを操作できるようになります。
LinuxやUnixを利用する上で、シェルスクリプトは欠かせない存在です。この機会に、シェルスクリプトについて学習してみてはいかがでしょうか。