Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新(準備中)

Feb 7, 2021 - コメント - 日記

ランダムな文字列を生成する

シェルからパスワードなどを簡単に生成したい時に以下のようにします

1
< /dev/urandom |  LC_ALL=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= | head -c 32

多くのOSでは、/dev/urandomにアクセスすると実用十分なランダムな文字列が生成されます。これは文字列以外も含むバイトシーケンスなので、trコマンドを使ってA-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+=以外の文字が含まれていた場合は削除します。最後にhead -c 32で32文字分得られたら終了します。

LC_ALL=Cはtrコマンドがマルチバイトの解釈をしようとする事を止めるためで、すべての環境でつけておいた方がいいと思います。

MacOSXでクリップボードにコピーしたい場合は以下のようにpbcopyに渡してやると便利ですね。

1
< /dev/urandom |  LC_ALL=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= | head -c 32|pbcopy