シェルスクリプトって何?
シェルスクリプトはシェルで実行するコマンドを連続的に実行するようにまとめて記述した文章のことです。コマンドはPCを操作するための単語のようなもので、ファイルを作る「touchコマンド」やディレクトリの移動「cdコマンド」ファイルのコピー「cpコマンド」などがあります。コマンドの意味を覚える必要はありますが使い方はいたって簡単です。
シェルスクリプトを知るにはまずシェルとは何か?ということを知っておく必要があります。
シェルについては以下の記事で解説していますが、簡単に説明します。
シェルはイメージではハッカーが使うような黒い背景+文字だけの画面のことです。あの画面に文字(コマンド)を打ち込むことでコンピュータを操作できます。
つまりシェルはコンピュータにテキストで命令を送るための窓口です。windosではアイコン(絵)を使って操作しますが、Linuxでは文字でコンピュータを同じように操作できます。
例えばPCの電源を切る時windowsやMacであればデスクトップの電源ボタンを押しますよね?
これをシェルを使って電源を落とすとコマンドで以下のようになります。
shutdow -h now
シェルは電源を切る以外にもファイルを作るなどさまざまなことができます。windowsでも使用できますが、UNIXやLinuxのほうがシェルによる操作に特化しています。シェルもプログラムのひとつでLinuxで最もよく使われているのはBashというシェルです。
なぜシェルを使うの?
はっきりいって普通の使い方ではシェルは不便です。欠点をあげると
- コマンドを覚える必要がある
- 直感的な操作がしにくい
- マルチメディアの操作は難しい
など他にもたくさんあります。操作としてはスマホのようにタッチのほうが簡単で分かりやすいですよね
ではシェル操作を使用する利点はなんでしょうか?
- 業務環境ではCUI(シェル)しか使えない環境がある(プロ仕様)
- コマンドを打てばダイレクトに設定やアプリを起動できるので慣れれば早い
- 人為的なミスを減らす工夫がしやすい。(ボタン押すより文字打つ方が確実)
- プログラミング言語との相性が良い
など、こちらも結構利点があります。いろいろ挙げましたが、シンプルに学習・スキルアップとしてシェルを使いこなせるようになるのはおすすめです。
シェルを使いこなせれば、OS、ハードウェアの仕組みをより深く理解でき、さらにプログラミングも抵抗なくやれるようになります。
シェルスクリプトとは?
シェルスクリプトは「連続したシェル操作が記述されたファイル」です。
シェルスクリプトを実行するとコマンドが連続して実行されます。シェルスクリプトを作ることをシェルプログラミングと言ったりします。
そもそも前提としてですが、シェルでの操作は一行ずつ実行します。
例えば、testフォルダを作る、testファイルを中に入れる、testファイルにthis is testと書き込む、シャットダウンするという操作があればシェルでは一行、一行打って実行していきます。
mkdir test エンター
touch test エンター
echo “this is test” > test エンター
shutdown -h now
というようにです。シェルスクリプトはこれらの一連作業をスクリプトを実行するだけで全て実行できます。
シェルスクリプトはif条件分岐、for文などを使用可能です。OS操作のプログラミング言語ともいえますね。シェルプログラミングは他のプログラミング言語よりも初心者にとって簡単で理解しやすいのでおすすめです。
シェルスクリプトの基礎
シェル操作は基本一行一実行
シェルスクリプトはそれらをまとめて連続実行できるようにしたものです。
特に何回も似たような操作を連続するような場合や日常的によく使うシェル操作がある場合にシェルスクリプトは輝きます。
何百行もの操作も
. /script1
または
source script1
などとスクリプトファイルを指定するだけで実行できます。エンターを何百回も押す必要はありません。配布も簡単です。スクリプトの一部を書き換えたり流用すれば他の操作にも応用可能です。
文法
コメント
プログラム中に説明を入れたい時には
#コメントを入力
というように#を先頭に置くと、その行はコマンドとはみなされず、コメントとして扱われます。
hosntame #ホスト名を出力
というように間に#を入れた場合は#の右側がコメントになります。
改行を無視したい場合
作り方
たくさんの種類のシェルがありますが、おすすめは「bash」です。bashはlinux, unix, macなどたいていどこにも入っているからです。ここではbashを使用したシェルスクリプトの記述方法を解説します。
シバンの記述
これがシェルスクリプトで〇〇のアプリで実行しますよ!と知らせるための文章をシバンと言います。
これを一行目に書かなければなりません。
#!/usr/bin/env bash
と書きます。
シバンの記述は互換性を考慮しよう!
シェルスクリプトの利点は何と言っても互換性の高さです。bashが入っている環境であれば動作可能です。
シバンの記述法として
#!/bin/shや#!/bin/bash, #!/usr/bin/bashなどがありますが、パスが環境によって異なることがあるため#!/usr/bin/env bashというようにenvコマンドを指定して該当するパスを検索するように設定するとbashのパスを気にする必要がなくなり、互換性が向上します。これはbashに限らずpythonなどの他の言語でも同じことが言えます。/bin/bashと同様にenvのパスが環境によって異なる場合やセキュリティ面で/bin/bashの指定を優先する場合もあります。
コマンドの記述
コマンドはシェルに打ち込むものと同じように書きます。
#!/bin/bash
cd ~
echo "Shell script executed"
bashでは改行が解釈されて一行ずつ実行されます。
改行を無効にしたい場合はバックスラッシュを追加します
echo ” this is a pen \
this is an apple ”
というように複数行分けて記述できます。
ファイル名はシェルスクリプトであることがわかるように.shや.bashと書きます。
「script.sh」というように書きます。
パーミッションの変更
Windowsでは聞き慣れませんがファイルには権限というものがあります。シェルスクリプトはただのテキストファイルではなく、プログラミングとして実行するものなのでその許可を与える必要があります。ファイルには実行許可を与えます。「chmod +x script.sh」
「ls -al」で権限を確認して、「x」の権限が与えられて入れば実行可能です。
Linuxのファイルのモードとは?drwxr-xr-xの意味
シェルスクリプトを記述するのに必要な基礎知識
シェルスクリプトを記述するのに最低限な知識は紹介しました。しかし、もっと有用なシェルスクリプトを書くためには広範な知識が必要です。
- シェル(bash)の使い方・コマンドの知識
- ユーザーやグループの設定
- ファイルやディレクトリの知識
- ファイル・ディレクトリの権限
- メタキャラクタ
- bashの基本操作
- リダイレクション
- コマンド制御
- テキストの処理(cat, tr,cut, awk)
- 制御文法( if,for,while etc)