在终端中生成随机文本文件

时间:2012-11-24 13:35:26

标签: macos bash unix random terminal

我正在尝试从终端在我的macbook上生成一个随机文本文件。我正在尝试的是:

tr -dc A-Za-z0-9 < /dev/urandom | head -c100 > RandomFile.txt

但即将到来

tr:非法字节序列

我做错了什么?

2 个答案:

答案 0 :(得分:7)

设置此环境变量,你应该好好去:

setenv LC_ALL C

The answer for which I found on this page

有了这个环境变量,我看到了一个格式很好的输出:

tr -dc A-Za-z0-9 < /dev/urandom | head -c100
Kk4kfjR3O0UraMpfTGicGvYCziFClJQUTO3zCXdo05RTxEUigqPXTkjtiGOsTsaNyqNR3rX2dsmPlHkSdqO5qWBTmIFIYezsekWT[~]:;

答案 1 :(得分:1)

# 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

这是我的库函数。优点是性能和直接分配给变量的能力。你可能会有点矫枉过正。