8文字のパスワードを100個生成する場合は以下のコマンドになる。
cat /dev/urandom |tr -dc[:alnum:]|head -c 800|fold -w 8
※ linuxを想定しています。BSD系ではコマンドの挙動が違うかもしれません。
※ 左のコマンドから順にパイプでつなげていって出力を見れば、下の解説いらないかも。
解説
乱数生成
cat /dev/urandom
- /dev/urandomは乱数を生成する仮想デバイス
- 参考:https://ja.wikipedia.org/wiki//dev/random
英数字以外を削除
tr -dc [:alnum:]
- [:alnum:]は英数字[0-9A-Za-z]を意味する正規表現
- -d は削除
- -cを入れるとスペースのあとで表現したものの補集合がtrコマンドの対象となる。ゆえに、-c [:alnum:] で英数字以外のものがtrコマンドの対象となる。
- -dc [:alnum:]で「英数字以外の文字列を削除」という意味。
最初の800文字を抽出
head -c 800
- head -c n で最初のn文字を表示
- 8文字×100で800とした。
8文字づつ改行
fold -w 8
- fold -w n でn文字ずつ改行
- 10文字のパスワードにしたい場合は fold -w 10