pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

ポストした内容のカテゴリー分けがちゃんと出来てないので、過去記事を探したい方はお手数ですが検索で探してみてください。


ランダム文字列をシェル上で生成する。ただし区別しづらい文字は削る。

シェル上のコマンドでランダムな文字列を取得したい場合の定番は、おそらく以下のような方法だと思います。

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -10
cat /dev/urandom | base64 | fold -w 10 | head -10

しかし、これだけでは区別しづらい文字である、0, O,1,l,I が含まれてしまいます。これを削るには、 tr や base64 の出力に対して tr -d 'O0l1I|' を追加すればOKです。ランダム文字列としての強度は若干下がるでしょうけれど、それよりも視認性を優先したほうが実用的だと思います。

実際の利用例としてはこんな感じでしょうか。

cat /dev/urandom | tr -dc '[:alnum:]' | tr -d 'O0l1I|' | fold -w 16 | head -10
cat /dev/urandom | tr -dc '[:graph:]' | tr -d 'O0l1I|' | fold -w 16 | head -10


なお、tr -d 'O0l1I|' を使う代わりに tr -dc で区別しづらい文字を除いた条件付けを行ってもよいのですけど、これは指定が冗長になるのであまりおススメできないですね。