【问题标题】:Generate random text file in terminal在终端中生成随机文本文件
【发布时间】:2012-11-12 13:33:20
【问题描述】:

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

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

但我得到了

tr:非法字节序列

我做错了什么?

【问题讨论】:

  • /dev/urandom 提供 00..ff 范围内的十六进制字节。从hexdump /dev/urandom 开始并检查手册页以了解其输出的 hexdump 格式选项。

标签: macos bash unix random terminal


【解决方案1】:

设置这个环境变量,你应该很高兴:

setenv LC_ALL C

The answer for which I found on this page.

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

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

【讨论】:

  • 谢谢,这个页面很有用。它实际上是 export LC_ALL=C 而不是 setenv LC_ALL C
  • 是的。这取决于您的终端使用的外壳。
【解决方案2】:
# 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多