Cách tạo tệp .txt (Con người có thể đọc văn bản như ascii) ngẫu nhiên trong linux


43

Tôi cần tạo một tệp văn bản chứa dữ liệu văn bản ngẫu nhiên mà con người có thể đọc được. Tôi biết rằng chúng ta có thể sử dụng /dev/urandom/dev/randomđể có được dữ liệu ngẫu nhiên. Nhưng nó không thể đọc được bởi con người. Tôi cần tạo một tệp chứa định dạng văn bản ngẫu nhiên. Có cách nào để làm điều đó?


1
"Có thể đọc được bởi con người" như trong ý nghĩa thực tế? Câu đầy đủ? Hay chỉ là một số từ trong từ điển?
slhck

Tùy thuộc vào định nghĩa của "ngẫu nhiên" và những gì bạn đang cố gắng thực hiện, có một số trình tạo Lorem Ipsum có sẵn hoặc có thể truy cập từ Linux, thường có thể tải xuống từ kho lưu trữ của bạn. Xem Có cái gì đó giống như một máy phát điện lorem ipsum không? , Trình tạo ipsum lorem ngoại tuyến , aur.archlinux.org/packages/lorem-ipsum-generator , v.v.
fixer1234

Câu trả lời:


93

Chúng ta có thể làm điều đó bằng cách làm theo lệnh

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

Nó tạo ra một tệp có kích thước tên file.txt là 10 MB.


1
Điều tuyệt vời này, nó cũng thêm một dòng mới mỗi 76 ký tự.
wvducky

15

lấy đầu ra của:

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

và dẫn nó đến một tập tin.

Bạn có thể sử dụng lệnh head với -c hoặc -n để giới hạn kích thước tệp

ví dụ để tạo tệp 1kB a.txt:

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

Bạn cũng có thể sử dụng [:alnum:]thay vì A-Za-z0-9. Ngoài ra, nếu bạn muốn có khoảng trắng và dòng mới được thêm vào, bạn có thể thực hiện biến thể này:tr -dc '[:alnum:] \n' ...
wvducky

4

base64dường như chỉ xuất các ký tự chữ và số cộng /+.

Tôi thích điều này để có thêm các ký tự "chấm câu", như

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

Vì vậy, sử dụng này:

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

và sử dụng trđể xóa dấu ngoặc đơn 'backticks `và dấu gạch chéo ngược \

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

các -ctùy chọn kích thước để headcó thể có một hậu tố nhân: b 512, KB 1000, K 1024, MB 1000 * 1000, M 1024 * 1024, GB 1000 * 1000 * 1000, G 1024 * 1024 * 1024, và vân vân cho T, P , E, Z, Y.


3

Nếu bạn không có / dev / urandom (vì có thể bạn đang sử dụng bảng điều khiển GitBash), bạn có thể sử dụng:

openssl rand 33000 -base64 -out dump.txt

3

Nếu bạn muốn bám vào các từ trong từ điển thực sự, hãy sử dụng mẹo đó:

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

Lưu ý rằng bạn không chỉ định hình học (bao nhiêu từ trên mỗi dòng, bao nhiêu dòng?)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.