【Mac】定期的にスクリプトを実行する

いま、だいたい何時くらい。
 そんな時計がむかし、Mac のアプリであった気がする。
 同じものを再現してみたい。

だいたいこのくらい。

といっても、date コマンドを実行して、現在なん分かによって、「だいたい」の区分を厳密に決めるくらいしか思いつかない。

4 時 55 分から 5 時 05 分なら、だいたい 5 時くらい。
 5 時 05 分から 5 時 15 分まで、5 時すぎ。
 5 時 15 分から 5 時 25 分まで、5 時半前。
 5 時 25 分から 5 時 35 分まで、5 時半くらい。
 5 時 35 分から 5 時 45 分まで、5 時半すぎ。
 5 時 45 分から 5 時 55 分まで、6 時前。

だいたいこんな感じだ。

やってみる

📝 daitai.sh
#!/bin/bash

m=`date "+%-M"`
h=`date "+%-I"`

if test $m -ge 45; then
	h=`expr $h + 1`
	if test $h -eq 13; then
		h=1
	fi
fi

if test $m -ge 55 -o $m -lt 5; then
	echo 'だいたい' $h '時くらい'
fi
if test $m -ge 5 -a $m -lt 15; then
	echo 'だいたい' $h '時すぎ'
fi
if test $m -ge 15 -a $m -lt 25; then
	echo 'だいたい' $h '時半まえ'
fi
if test $m -ge 25 -a $m -lt 35; then
	echo 'だいたい' $h '時半くらい'
fi
if test $m -ge 35 -a $m -lt 45; then
	echo 'だいたい' $h '時半すぎ'
fi
if test $m -ge 45 -a $m -lt 55; then
	echo 'だいたい' $h '時まえ'
fi

だいたい以上のようになろうかと思う。

$ daitai.sh
だいたい 10 時すぎ

試してみたところ、だいたい出来てる。

なんでこんなことをするか

口さがないひと達は罵しるであろう。これがなにになるのか。しょうもないではないか、と。
 筆者は先のスクリプトを Geektool で表示することを思いついたのである。
 さらにいえば、先のスクリプトを 300 秒おきに実行させて、ついでに別のスクリプトを一緒に実行できるのではないか、と考えたのだ。

例えば以下は、ダウンロードフォルダに溜まりきった pixiv の画像を、一掃してピクチャフォルダに収納するというものである。

📝 pixiv_kataduke.sh
#!/bin/bash

cd ~/Downloads

ls -1 | while read line
do
	if echo $line | grep -sqE '[0-9]*_p[0-9]*\.(png|jpg|gif|jpeg)'; then
		mv $line ~/Pictures/使うかもしれない画像/pixiv
	else
		continue
	fi
done

pixiv は 01234567_p0.png というような規則のファイル名で保存されるのである。
 これを実行すると、ダウンロードフォルダの pixiv 画像はピクチャフォルダにある専用のフォルダに片付けられる。

だいたいの時刻を表示するスクリプト、前掲の daitai.sh の最後に、片付けのスクリプトを加える。

/Users/user/スクリプトのパス/pixiv_kataduke.sh

実行してみると、うまく動いてくれるのだ。だいたいの時間の表示とともに、片付けスクリプトも実行される。
 これで、SSD を痛めながら、ちまちまと美麗な絵のダウンロードにいそしめる。五分に一回のわりあいでファイルを移動してくれるので、ダウンロードフォルダはいつも片づいている、というわけだ。

そもそも、daitai.sh は必要なのか

Geektool を利用する以上、デスクトップになんか表示させるべきだろう、と思ったのだが、そもそもそんな必要あるのだろうか。
 以下のように空のシェルを作って、デスクトップの表示と関係ない pixiv_kataduke.sh を300 秒おきに実行させてみる。

結果としてはちゃんと動いてくれた。daitai.sh なんて必要ないのである。
 Geektool を稼動し続けるというコストはある。しかしすでに利用しているなら、Geektool は定期的にスクリプトを実行するのに役立ってくれそうだ。