qiitaに書く前にいろいろと試してるんだけど、 そんなコードたちを書いてみたいなと。
書いた記事は、
シェルでよく使う日付の連番をワンライナーで
という普通のありふれた処理で、リンク先でも書いたとおりfor文のコードはたくさん引っかかるのですが、
標準出力からxargsで処理する形式で書いてるものは、見つからない。
シェル芸初心者としていうのも何だけど、ユニケージ開発手法って流行ってないよね。。。
仕様
bashで日付を連番で出力する
※環境は、Ubuntu 16.04
qiitaには書けないコードたち - 1
さてgistに残ってるログから見ると、
コマンドを書くにあたって最初に書いたのは以下のコード。
$ yes $(date +%s) | head -10 | awk '{ print $1 + (24 * 60 * 60 * NR)}' | xargs -I_ -n1 date -I --date='@_'
先頭のyesコマンドがとても気持ち良い。
なぜか先頭に書いてしまうyes。
あとのコマンドは惰性で書いてるようなもの。
dateのオプションをhelpで見ただけなので、詳細な設定方法を考えずエポックで指定しているのが面白い。
てかhelp下の方しか読んでないよね過去の俺。
あとxargsのオプション-Iではよく'@'を指定するけど、
dateのオプションで解釈されてしまうから'_'で指定しているあたりが可笑しい
qiitaには書けないコードたち - 2
次に書いたのは以下のコード。
$ seq 0 10 | awk "{ print $(date +%s) + (24 * 60 * 60 * \$1)}" | xargs -I_ -n1 date -I --date='@_'
流石にyesはまずいと思ったのか、seqで書いてるし、awkの中でdateを使うことで前後日を求められるようにしてる。 ただ、awkの中でコマンド置換は無いですよ。コマンド置換するためにダブルコートになってるし、そのために$の前にエスケープも酷い。全体的に美しくない。
qiitaに書いたコード
そして、dateのオプションをちゃんと調べて以下になる。
シンプルで美しい。。。
文字数も半分ほどですし
ネットで見つかるコードって短くて綺麗なものが多いけど、みんな時間かけてるんだろうなとか。
もしくは、自分が時間かけ過ぎなのか。。。