シェルスクリプトでいつもの作業を少し自動化しよう
2022-04-09
azblob://2022/11/11/eyecatch/2022-04-07-shellscript-introduction-000.jpg

こんにちは!22卒のまつばらです!

今回は「シェルスクリプト」の使い方やメリットを皆さんにご紹介したいと思います。

シェルスクリプトとはなんぞや

「シェルスクリプト」を簡単に説明するとコンピューターの命令(コマンド)を複数組み合わせてそれをファイルに記述したものです。

例えば、日常でファイルの一括作成、削除またはバックアップやログの監視など毎回実行するのが面倒な作業はシェルスクリプトを作成して、実行する時間を設定すれば、さらなる業務の効率化・自動化を実現できます。

ターミナル

まず、シェルスクリプトやコマンドについて理解するためには、このターミナルについて知る必要があります。

このターミナルで「touch testfile.txt」と打ってEnterを押すと中身は空のテキストファイルと作ってくれます。

「touch」というのがコンピューターに送るコマンド(命令)のことでその後ろの「testfile.txt」とはファイル名のことです。

しかし、このファイルを作るという動作はマウスやタッチパッドでも行うことができます。(こちらのほうが覚えやすいし楽ですよね!)

ですが、実はその画面上でのファイルを作成する動作の裏側では、先ほどターミナルで打ったコマンド=「touch test-file.txt」が実行されているのです。

ここでどうせ同じ操作ならマウスやタッチパッドでやった方がいちいちコマンド「touch」を
ターミナルで打たなくていいから楽じゃんと思うかもしれません。

ですが、もし空のファイルを100個作る必要があった場合、100回クリックすることになると思うと考えるだけで嫌になります。しかし、ターミナルで「touch test-{1..100}.txt」と打ってEnterを押すと一瞬で空のファイルを連番で100個作ることができます。

このようにコンピューターにしてほしい動作をお願いして、動作の結果を表示してくれるのがターミナルです。

誰が処理を実行しているのか

ここまで、ターミナルでコマンドを打てばコンピューターが動いてくれるということがわかりました。

では、誰がこの処理を実行しているのか。

それは「カーネル」です。

カーネルは、OSの中でも特に中核的なプログラムであり、ハードディスクやメモリなど、コンピュータの資源管理を行なっています。

しかし、ユーザーは直接カーネルを操作することはできません。

そこで「シェル」がユーザーから入力されたコマンドをOSの中核であるカーネルとやり取りし、カーネルのプログラムを呼び出します。

そして、そのコマンドをカーネルが実行し、その結果をシェルが受け取ってターミナルに表示されることでユーザーが確認することができるのです。

シェルのイメージ

実際に作ったシェルスクリプト

自動でログを記録する今日の日付ファイルを作成する。

#!/bin/bash

# logファイルを自動生成するスクリプト

logdirectory=~/log/$(date "+%Y%m")

# 今月のディレクトリがない場合は作成する
if [ ! -d "$logdirectory" ];then
  mkdir "$logdirectory"
fi

logfile="${logdirectory}/$(date "+%m%d").md"

# 今日の日付のファイルがない場合は作成する
if [ ! -e "$logfile" ];then
  touch "$logfile"
fi

# vscodeでファイルを開く
code $logfile

このシェルスクリプトは、毎日ファイルにログを書いていたのですが、毎日日付を確認してファイルを作成することがとても手間に思いこのシェルスクリプトを作成しました。

個人的には、日常で毎日よく繰り返す行動を少し自動化すると時間に余裕が生まれると思います。

まとめ

シェルスクリプト使えば、複雑なコマンドであっても毎回手で入力する必要はありません。

そうして同じ作業を自動化できるということには、次のようなメリットがあります。

  • 一度シェルスクリプトを作れば、同じ処理が必要になったときにそのシェルスクリプトを再利用することができる。
  • 自分だけでなく、他の人ともシェルスクリプトを共有使うことができる。
  • コマンドの打ち間違えによるミスをなくすことができる。

皆さんも日常の同じ作業を少しずつ自動化していきましょう!