如何确保生成的密码包含所有这些特殊字符:?!/=\
?
目前我正在使用:
pwd_usr["$i"]=`cat /dev/urandom|tr -dc "a-zA-Z0-9-_\?\!\=\/\"|fold -w 15|head -n 1`
但有些生成的密码完全不包含我想要的特殊字符。
答案1
添加一条grep
命令来过滤生成的密码以查找包含特殊字符的密码:
LC_ALL=C </dev/urandom tr -cd '_a-zA-Z0-9-\?\!\=\/' | \
fold -w15 | grep '[\?\!\=\/]' | head -1
笔记:
我添加是
LC_ALL=C
因为,根据系统的区域设置,tr
会产生错误非法字节序列如果提供二进制数据(由 /dev/urandom 生成)。cat /dev/urandom
使用重定向:<file command
或来代替command <file
。