如何在 Linux 中建立隨機 .txt(人類可讀文本,如 ascii)文件

如何在 Linux 中建立隨機 .txt(人類可讀文本,如 ascii)文件

我需要創建一個文字文件,其中應包含人類可以讀取的隨機文字資料。我知道我們可以使用/dev/urandom/dev/random來獲取隨機數據。但它不是人類可讀的。我需要建立一個包含隨機文字格式的文件。有什麼辦法可以做到這一點嗎?

答案1

我們可以透過以下命令來完成

base64 /dev/urandom | head -c 10000000 > file.txt

它會建立一個名為 file.txt 的文件,大小為 10 MB。

答案2

得到輸出:

tr -dc A-Za-z0-9 </dev/urandom 

並將其通過管道傳輸到文件。

您可以使用使用 -c 或 -n 指令限製檔案大小

產生 1kB 檔案 a.txt 的範例:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt

答案3

wamerican軟體包提供了 下可用的單字詞典/usr/share/dict/words

您可以使用以下技巧來使用它們:

cat /usr/share/dict/words | sort -R | head -1024 > file.txt

請注意,您沒有指定幾何形狀(每行有多少個單詞,有多少行?)

答案4

base64似乎只輸出字母數字字元加/+

我喜歡這樣獲得更多“標點符號”字符,例如

'[:punct:]'
  Punctuation characters; in the 'C' locale and ASCII character
  encoding, this is ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
  ] ^ _ ` { | } ~

所以用這個:

'[:graph:]'
     Graphical characters: '[:alnum:]' and '[:punct:]'

並用於tr刪除單引號 ' 反引號 ` 和反斜線 \

tr -dc '[:graph:]' < /dev/urandom | tr -d \''\\'\` | head -c [size]

尺寸-c選項head可以有乘數字尾:b 512、kB 1000、K 1024、MB 1000*1000、M 1024*1024、GB 1000*1000*1000*1000、M 1024*1024、GB 1000*1000*1000、G 1024*1024*1024,依此類,E、P ,Z,Y。

相關內容