この連載では「現場で使えるシェルスクリプト入門」について解説していきます。
シェルスクリプトを覚えると、手入力していた Linux の定型作業を自動化できてとても便利です。
例えば、
- バックアップ
- ファイル送受信
- デプロイ作業
など、大抵の作業は自動化できます。 タイプミス防止、手順漏れの防止、作業時間の短縮などメリットも多く、 Linux を扱う上で必須のスキルと言えます。
シェルスクリプトとは?
そもそもシェルスクリプトとは何かというと、 シェル(bash などのコマンド解釈プログラム)に実行させる命令の集合です。
中身はただのテキストで、普段ターミナルで打つコマンドを並べたり、if 文やループで処理を制御したりします。
まずは shebang を書く
先ず始めに何をやるかというと、シェルスクリプトの1行目にshebang(シバン・シェバン)と呼ばれる行を追加します。
#!/usr/bin/bashこれは「このスクリプトは bash で実行してね」という宣言で、OS がスクリプトをどう扱うかを決める重要な設定です。
このbashのパスは「type -a bash」コマンドで探すことができます。
# type -a bash
bash is /usr/bin/bash
bash is /bin/bash先頭に表示されるのがその環境で最初に使用されるbashコマンドになります。
type -aコマンドを使うとすべてのパスが表示されるので、他のbashを使いたい場合はそのパスをshebangに指定してください。
マルチ環境で作成したシェルスクリプトを動かしたい場合は、以下のようにshebangを指定します。こちらで記述すると、環境ごとに異なる bash の場所を自動で探してくれます。
#!/usr/bin/env bash試しに以下のコードをtest1.shに記述します。ちなみにシェルスクリプトの拡張子は慣習的に.shを使用します。
#!/usr/bin/bash
echo "Hello!!"test1.shに所有者(u)だけが実行できる権限(x)を付与します。
# chmod u+x test1.sh実行権限「x」が付与されたことを確認します。
# ll test1.sh
-rwxr--r-- 1 root root 37 Apr 28 01:57 test1.sh*他のユーザーに「読み取り(r)、書き込み(w)、実行(x)」をさせず、オーナーだけに「読み取り(r)、書き込み(w)、実行(x)」を許可する場合は、「chmod 700 test1.sh」で権限を付与します。
# chmod 700 test1.sh
# ll test1.sh
-rwx------ 1 root root 31 Apr 28 02:18 test1.sh*シェルスクリプトを実行します。
カレントディレクトリはパスが通っていないので、先頭に「./」を付けてカレントディレクトリを指定します。
カレントディレクトリ以外に保存している場合は、そのパスを指定してください。
# ./test1.sh
Hello!!「Hello!!」と出力されればOKです。


コメント