An slight variation on your suggestion:
head -c 32 /dev/random | base64
Optionally, you can trim the trailing =
and use echo
to get a newline:
echo $(head -c 32 /dev/random | base64 | head -c 32)
which gives you a more predictable output length password whilst still ensuring only printable characters.