Macos 在终端中生成随机文本文件
我正试图从终端在我的macbook上生成一个随机文本文件。我尝试的是:Macos 在终端中生成随机文本文件,macos,bash,unix,random,terminal,Macos,Bash,Unix,Random,Terminal,我正试图从终端在我的macbook上生成一个随机文本文件。我尝试的是: tr -dc A-Za-z0-9 < /dev/urandom | head -c100 > RandomFile.txt tr-dc A-Za-z0-9RandomFile.txt 但是我越来越 tr:非法字节序列 我做错了什么?设置此环境变量,您就可以开始了: setenv LC_ALL C 有了这个环境变量,我看到了一个格式良好的输出: tr -dc A-Za-z0-9 < /dev/uran
tr -dc A-Za-z0-9 < /dev/urandom | head -c100 > RandomFile.txt
tr-dc A-Za-z0-9RandomFile.txt
但是我越来越
tr:非法字节序列
我做错了什么?设置此环境变量,您就可以开始了:
setenv LC_ALL C
有了这个环境变量,我看到了一个格式良好的输出:
tr -dc A-Za-z0-9 < /dev/urandom | head -c100
Kk4kfjR3O0UraMpfTGicGvYCziFClJQUTO3zCXdo05RTxEUigqPXTkjtiGOsTsaNyqNR3rX2dsmPlHkSdqO5qWBTmIFIYezsekWT[~]:;
tr-dc A-Za-z0-9
这是我的库函数。优点是性能和直接分配给变量的能力。对您来说可能太过分了。/dev/uradom提供的十六进制字节范围为00..ff。从
hextump/dev/uradom
开始,检查手册页中hextump的输出格式选项。谢谢,该页面很有用。它实际上是export LC_ALL=C,而不是setenv LC_ALL CYep。这取决于终端使用的外壳。@gniourf_gniourf告诉你的人给出了一个过于简单的答案。“eval
是邪恶的”对初学者来说是个好建议。但是,您不应该否决您不理解的正确、编写良好的代码。
# Print or assign a random alphanumeric string of a given length.
# rndstr len [ var ]
function rndstr {
if [[ $FUNCNAME == "${FUNCNAME[1]}" ]]; then
unset -v a
printf "$@"
elif [[ $1 != +([[:digit:]]) ]]; then
return 1
elif (( ! $1 )); then
return
else
typeset -a a=({a..z} {A..Z} {0..9})
eval '${2:+"$FUNCNAME" -v} "${2:-printf}" -- %s "${a[RANDOM%'"${#a[@]}"']"{1..'"$1"'}"}"'
fi
}
rndstr 100