はじめに
WSLで何かしたいと思い、WindowsのbatからWSLを読み出してシェルを実行するプログラムを作成しました。実行すると今日の曜日を取得して一言メッセージを出力する簡単なプログラムです。
前提条件
WSLが使用できること。
以前書いたWSL(Windows Subsystem for Linux)を使ってみたを参照。
構成
本記事の例は以下になります。
Windows 10側:batファイルの格納場所は任意
WSL側:ホームディレクトリにスクリプトを配置(/home/user01/message.sh)
batファイル
@echo off
rem WLSのメッセージスクリプトを指定
bash -c /home/user01/message.sh
cmd /k
シェルスクリプト
#!/bin/bash
# 曜日取得
date > date.tmp
DAY=`cut -d " " -f 1 date.tmp`
MON=`cut -d " " -f 2 date.tmp`
# 最終日取得
YEAR=2018
case ${MON} in
Jan ) MON=1;;
Feb ) MON=2;;
Mar ) MON=3;;
Apr ) MON=4;;
May ) MON=5;;
Jun ) MON=6;;
Jul ) MON=7;;
Aug ) MON=8;;
Sep ) MON=9;;
Oct ) MON=10;;
Nov ) MON=11;;
Dec ) MON=12;;
esac
LAST=`date -d${MON}/01/${YEAR}-1days+1MONth '+%Y%m%d'`
TODAY=`date +%Y%m%d`
# 見やすいように線を出力
line(){
echo ' *-----------------------------------------------------------------------------------------------------------------*'
}
# 処理1(曜日によりメッセージを出力)
case ${DAY} in
Mon ) line;echo " 最高の製品だから、最高の発表をしなければならない。";line;;
Tue ) line;echo " 死は古いものを取り除き、新しいもののために道を開いてくれる、生命にとっての変革の担い手。";line;;
Wed ) line;echo " 「自分はいつか死ぬのだ」と意識することは、何かを失うかもしれないという思考の落とし穴にはまらずに済む最善の方法。";line;;
Thu ) line;echo " 我々は宇宙に衝撃を与えるためにここにいる。";line;;
Fri ) line;echo " いくら素晴らしいものをつくっても、伝えなければ、ないのと同じ。";line;;
Sat ) line;echo " 僕たちは考え直さなきゃいけない。マイクロソフトが敵か味方だという考えは捨てないと。アップルが元気になる方が大事だ。";line;;
Sun ) line;echo " ベストを尽くして失敗したら、ベストを尽くしたってことさ。";line;;
esac
# 処理2(月末ならメッセージを出力)
if [ ${LAST} == ${TODAY} ];then
line;echo " 今日は月末です!今月もお疲れ様でした。";line
fi
# ファイル削除
rm -f date.tmp
exit 0
実行例
追記
本記事の例ではスティーブ・ジョブズの名言を出力するので、スタートアップに登録することで1日をポジティブにさせてくれます。
以下のスタートアップのパスにbatのショートカットを作成すると、端末起動時に自動起動を行いメッセージを出力します。
C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup