Bash

如何從 /dev/urandom 讀取 N 個隨機字元?

  • April 14, 2022
read /dev/urandom 3

以上不起作用..如何從/dev/urandombash 中讀取隨機字節?

random="$(dd if=/dev/urandom bs=3 count=1)"

if指定輸入文件、bs塊大小(3 個字節)和count塊數(1 * 3 = 3 個總字節)

head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1

(如果您想要文字短劃線字元,短劃線字元必須像上面所做的那樣位於字元串的末尾,而不是*-_)。

並解釋由於上述命令集所做的事情:

  1. head -c 500 /dev/urandom: 從 中獲取前 500 個字元(字節)/dev/urandom
  2. tr -dc 'a-zA-Z0-9~!@#$%^&*_-':從第一個命令的輸出中刪除中指定的字元之外的所有字元。'a-zA-Z0-9~!@#$%^&*_-'
  3. fold -w 3: 格式化第二個命令的輸出,使其每行 3 個字元。
  4. head -n 1:在第一行顯示第三條命令的結果stdout

引用自:https://serverfault.com/questions/283294