シェルスクリプトの概要について解説します。
シェルスクリプトを扱えるようになると、仕事を効率化することができますし楽になります。
まずはその概要について理解しましょう!
目次
シェルスクリプトとは何か
シェルとは基本的には、コマンドの命令を解釈しOSとの橋渡しを行うものですが、もう1つの側面としてスクリプト言語を実行することができます。
そのスクリプトをシェルスクリプトといいます。
シェル向けに開発されたプログラミング言語という理解がわかりやすいです。
メモ
スクリプトとは、簡易的なプログラムやプログラミング言語をいいます。
シェルについてはこちらの記事で解説しているので、必要であれば読んでみてください!
実際のシェルスクリプトをみてみる
例のシェルスクリプトの要件は下記のような感じです。
- log_archivesというディレクトリを作成する
- production.log.実行した月のファイルをまとめて圧縮
- 最後に圧縮された元ファイルを削除
#!/bin/sh
log_dir="log_archives"
execute_month=$(date "+%Y%m")
echo $execute_date
echo "[ログ退避] スクリプト開始"
mkdir -p log_archives
tar -zcvf $log_dir/$execute_month.tar.gz production.log.$execute_month* && rm production.log.$execute_month*
echo "[ログ退避] スクリプト終了"
実行前
9つのログファイルがあります。
> ls
production.log.20200901 production.log.20200902 production.log.20200903 production.log.20200904 production.log.20200905 production.log.20200906 production.log.20200907 production.log.20200908 production.log.20200909
実行
sh sample.sh
で先ほどのシェルスクリプトを実行します。
ログが出ており成功したようです。
> sh sample.sh
[ログ退避] スクリプト開始
a production.log.20200901
a production.log.20200902
a production.log.20200903
a production.log.20200904
a production.log.20200905
a production.log.20200906
a production.log.20200907
a production.log.20200908
a production.log.20200909
[ログ退避] スクリプト終了
実行結果
log_archives
の中に圧縮されて格納され、ログファイルは削除されていました。
> ls
log_archives
シェルスクリプトの何が良いの?
いくつかメリットを紹介していきます。
自動化して作業を楽にする
先ほどの例を手動で行うと複数のコマンドを打たなければならないので、大変ですしミスも発生します。
スクリプトにすることで毎回同じものを実行できますし、他の人と共有できます。
手軽にかける
シェルスクリプト はそこまで複雑ではないので、パッと書いて実行する気軽さもあります。
2回同じことをするときは、シェルスクリプト で作業を効率化しましょう。
まとめ
シェルスクリプトについて概要を理解できましたでしょうか?
シェルスクリプトを使うことで、効率化・自動化・マニュアル化をすることができるので学習して書けるようにしていきましょう。