%20no%20Linux.png)
Preciso criar um arquivo de texto que contenha dados de texto aleatórios que possam ser lidos por humanos. Eu sei que podemos usar /dev/urandom
e /dev/random
para obter dados aleatórios. Mas não é legível por humanos. Preciso criar um arquivo que contenha formato de texto aleatório. Existe alguma maneira de fazer isso?
Responder1
Podemos fazer isso seguindo o comando
base64 /dev/urandom | head -c 10000000 > file.txt
Ele cria um arquivo com nome file.txt de tamanho de 10 MB.
Responder2
obter a saída de:
tr -dc A-Za-z0-9 </dev/urandom
e canalize-o para um arquivo.
Você pode usarcabeçacomando com -c ou -n para limitar o tamanho do arquivo
exemplo para gerar um arquivo a.txt de 1kB:
tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt
Responder3
O wamerican
pacote fornece um dicionário de palavras disponível em /usr/share/dict/words
.
Você pode usar o seguinte truque para usá-los:
cat /usr/share/dict/words | sort -R | head -1024 > file.txt
Observe que você não especifica a geometria (quantas palavras por linha, quantas linhas?)
Responder4
base64
parece gerar apenas caracteres alfanuméricos mais /
e +
.
Gosto disso para obter mais caracteres de "pontuação", como
'[:punct:]'
Punctuation characters; in the 'C' locale and ASCII character
encoding, this is ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
] ^ _ ` { | } ~
Então use isto:
'[:graph:]'
Graphical characters: '[:alnum:]' and '[:punct:]'
e use tr
para remover aspas simples 'crases' e barras invertidas \
tr -dc '[:graph:]' < /dev/urandom | tr -d \''\\'\` | head -c [size]
a -c
opção de tamanho head
pode ter um sufixo multiplicador: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024 e assim por diante para T, P , E, Z, Y.