bashでほどよいメールアドレスを生成する

メールアドレスでアカウントを作成するサービスの開発を行う際、メールアドレスをどう用意するか、というのが問題になると思います。

Gmailを使うと「+」で複数のメールアドレスを簡単に作れるので便利なのですが、重複しないである程度覚えやすくしておきたい、というのはあると思います。自動テスト用であれば覚える必要もないのでタイムスタンプをベースにメールアドレスを自動生成させて1回こっきりの使い捨てみたいにすることでいいかと思います。

prefix="youremail+localhost"
suffix="@gmail.com"
ymd=`date "+%Y%m%d%H%M%S"`
echo ${prefix}${ymd}${suffix}

youremail+localhost20170116113308@gmail.com

みたいなアドレスが生成されていました。確かにかぶるケースないんですが、ただこれだと長くて覚えづらいです。

そこで、

  • 多少メールアドレスが重複してもいたし方ない
  • そこそこ覚えやすく
  • 紛らわしい文字は除外しておく

要件で、以下のように改善してみました。

prefix="youremail+localhost"
suffix="@gmail.com"
ymd=`date "+%Y%m%d"`
serial=`cat /dev/urandom | LC_CTYPE=C tr -dc 'abcdefghijkmnpqrstuvwxyz' | fold -w 1 | head -n 1`
echo ${prefix}${ymd}${serial}${suffix}

youremail+localhost20170118j@gmail.com

みたいなメールアドレスができあがりました。

参考 http://qiita.com/K-Ponta/items/86e96dfd5d53e0a0ed33

bashでA-Zの連番を取り出すのは以下のようにして取り出すことが可能です。

echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z

参考

http://kaworu.jpn.org/kaworu/2014-07-11-1.php