【问题标题】:Has anything changed with /dev/urandom on MacOS Monterey?MacOS Monterey 上的 /dev/urandom 有什么变化吗?
【发布时间】:2022-01-01 16:06:25
【问题描述】:

我曾经能够使用以下行从/dev/urandom 生成随机字符序列:

cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=' | fold -w 100 | head -n 1 | grep -i '[!@#$%^&*()_+{}|:<>?=]' | tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]'

但在我升级到 Monterey 后,这不再起作用。我收到的输出无非是Input error。这个操作系统版本有什么变化吗?我现在如何从 /dev/urandom 生成 100 个随机字符的序列?

【问题讨论】:

  • tr 命令由于某种原因没有删除控制字符,因此fold 无法解析其输入(我假设它正在尝试将其读取为 UTF-8)。
  • 您可以添加LC_COLLATE=C或使用GNU tr

标签: bash macos random macos-monterey


【解决方案1】:

在蒙特雷,localeLANG 显示为已设置,而大覆盖值 LC_ALL 未设置,因为它通常在其他位置设置,例如 https://docs.oracle.com/cd/E19455-01/806-0169/utf8-98/index.html 要在 Monterey 中进行这项工作,只需将语言或覆盖更改为 POSIX 标准默认值:

LANG=C 或者 LC_ALL=C

在 Monterey 中,字符类型区域设置可以设置为: LC_CTYPE=en.US.UTF-8 避免使用尖括号括起来的转义码,因为现在设置了 LANG。

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2021-05-19
    • 2015-01-14
    • 2013-04-27
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 2010-09-13
    相关资源
    最近更新 更多