%20%D0%B2%20Linux.png)
Мне нужно создать текстовый файл, который должен содержать случайные текстовые данные, которые может прочитать человек. Я знаю, что мы можем использовать /dev/urandom
и /dev/random
для получения случайных данных. Но они не читаются людьми. Мне нужно создать файл, который содержит случайный текстовый формат. Есть ли способ сделать это?
решение1
Мы можем сделать это, выполнив следующую команду:
base64 /dev/urandom | head -c 10000000 > file.txt
Создает файл с именем file.txt размером 10 МБ.
решение2
получить вывод:
tr -dc A-Za-z0-9 </dev/urandom
и передать его в файл.
Вы можете использоватьголовакоманда с -c или -n для ограничения размера файла
пример создания файла a.txt размером 1 КБ:
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, G 1024*1024*1024 и т. д. для T, P, E, Z, Y.