ランダムな ASCII 文字列を作る

これから適当な短いコードを書くときには snippet というカテゴリにしよう。


Create a random password encrypted with md5 with custom lenght Using awk, echo, md5sum
これを見て、そういや以前適当にランダムな ASCII 文字列を作るスクリプトを書いたなと思い出して。
ランダムは /dev/urandom で、ASCII は base64 で。
しかし base64 だと長さによっては最後に = が並んでしまうので、そのへんは計算して十分な長さのランダムデータを生成した後に、余分な文字を cut で削っている。

#!/bin/bash
LENGTH=${1-32}
COUNT=$(($LENGTH*3/4 + 1))
dd if=/dev/urandom bs=1 count=$COUNT 2>/dev/null | base64 -w0 | cut -c -$LENGTH

LENGTH=${1-32} とか $((expr)) のところがたぶん bash 依存。