今日はお誕生日
今日は紲星あかりちゃんのお誕生日です!
ついでに私のお誕生日でもあります。というわけでお誕生日に関係する文字列から date
コマンドを作っていきたいと思います
1
お誕生日おめでとう始動
$ : $(echo お誕生日おめでとう|base64|grep -oP "(?<=5)([a-z][a-z])"|sed 's/.$/&&/g'); man $_ | grep -m1 -oP "(?<=- )..|..(?=rd)"|sort|tr -d |bash 2019年 12月 22日 日曜日 12:03:45 JST
こんなかんじ
$ echo お誕生日おめでとう|base64|grep -oP "(?<=5)([a-z][a-z])"|sed 's/.$/&&/g' pee
「お誕生日おめでとう」という文字列に不思議なシェル芸をすると pee
という文字列が得られます。
$ man pee | grep -m1 -oP "(?<=- )..|..(?=rd)" te da
pee
のmanページからこんな感じの正規表現で引っ掛けてやるとなんと date
の部品が得られます。というわけで改行と順番を入れ替えてやれば date
が出来上がります。
$ man pee | grep -m1 -oP "(?<=- )..|..(?=rd)" | sort | tr -d \n date
2
$ : xztaityozx; : ${_/??}; eval $(echo ?${_/${_/??}}?/???/|rev) 2019年 12月 22日 日曜日 12:55:44 JST
私の名前から date
を作ります。 ta
を変数展開で取り出し、glob展開用の文字列を作ってから eval
で評価します。
$ : xztaityozx; : ${_/??}; taityozx $ : xztaityozx; : ${_/??}; echo ?${_/${_/??}}?/???/|rev /???/?at?
3
$ echo 紲星あかり|sha256sum|grep -oP "(?<=f19).{6}"|sed 's/[0-9]../?/g;s@^@/???/@e' 2019年 12月 22日 日曜日 13:24:08 JST
せっかくなのでハイパーキュートVOICEROIDな紲星あかりちゃんからも date
を生成しました。とくに追加で説明するところと言えば sed
で e
を使っているところぐらいですかね
$ echo |sed 's/^/date/' date $ echo |sed 's/^/date/e' 2019年 12月 22日 日曜日 13:25:55 JST
結局いつもやってることと同じじゃないか…
最近は正規表現をこねこねして date
するのが楽しいです。任意の文字➡アルファベットや数値という処理で sha1sum
や base64
、 xxd
に頼らないといけないので、ここを何とかする方法が見つかればいいなぁと思っています。