Pelo que vale, headnão entende -cna minha máquina Solaris 10.
rahmu
2
Interessante que headpode ler /dev/urandom, mas tailnão pode.
Stefan Lasiewski 31 /
22
O @StefanLasiewski tailtenta primeiro chegar ao final do arquivo de entrada, o que leva uma eternidade (literalmente).
Gilles
Ah, como 'tail / dev / infinito', se houvesse esse dispositivo.
Stefan Lasiewski 31 /
3
@StefanLasiewski Você também tem /dev/zero, se não gosta de variedade.
Gilles
35
Supondo que dados pseudo-aleatórios sejam suficientes, dd if=/dev/urandom of=target-file bs=1M count=1000fará o que você deseja.
O dd (1) lê blocos de dados de um arquivo de entrada e os grava em um arquivo de saída. A linguagem da linha de comando é um pouco peculiar, mas é uma daquelas ferramentas realmente úteis que valem a pena dominar o básico.
Nesse caso, ifé o arquivo de entrada, ofo arquivo de saída, o bs"tamanho do bloco" - e eu usei a extensão GNU para definir o tamanho mais convenientemente. (Você também pode usar 1048576 se ddnão tiver extensão GNU.) countÉ o número de blocos para ler ife gravar of.
/dev/urandomé uma escolha melhor do que /dev/randomporque, no Linux, ele voltará a fortes dados pseudo-aleatórios em vez de bloquear quando os dados genuinamente aleatórios estiverem esgotados.
Você também pode considerar http://www.random.org/ como outro caminho para obter alguns dados aleatórios sem precisar gerá-los.
Uma observação - especificações da unidade, como 1Mnão estão disponíveis em todas as ddvariantes padrão . Se sua versão do ddé afetada, use bs=1048576.
Chris Baixo
4
O comando de exemplo criará um arquivo de contagem 1.000.000 de blocos, cada um com tamanho de 1 MB. Isso equivale a 1 TB (1M x 1MB), não 1 GB (que seria 1K x 1MB). Como um aparte, até certo ponto, aumentar o tamanho do bloco e reduzir a contagem de blocos tende a produzir melhor rendimento para uma determinada quantidade de dados de saída.
um CVn
2
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee 5000kb
Usado para gerar 5 MB de dados aleatórios de caracteres. Se você precisar de tamanho diferente, altere o -cvalor do cabeçalho, altere o nome do arquivo externo, execute e aguarde até a execução ser concluída.
vi
comvi -w randomfile
e pergunte a alguém que nunca viuvi
sair do programa. ;)Respostas:
Na maioria das unidades:
Se você
head
não entender oG
sufixo, poderá especificar o tamanho em bytes:Se você
head
não entende a-c
opção (é comum, mas não POSIX; você provavelmente possui o OpenBSD):Não use
/dev/random
no Linux, use/dev/urandom
.fonte
head
não entende-c
na minha máquina Solaris 10.head
pode ler/dev/urandom
, mastail
não pode.tail
tenta primeiro chegar ao final do arquivo de entrada, o que leva uma eternidade (literalmente)./dev/zero
, se não gosta de variedade.Supondo que dados pseudo-aleatórios sejam suficientes,
dd if=/dev/urandom of=target-file bs=1M count=1000
fará o que você deseja.O dd (1) lê blocos de dados de um arquivo de entrada e os grava em um arquivo de saída. A linguagem da linha de comando é um pouco peculiar, mas é uma daquelas ferramentas realmente úteis que valem a pena dominar o básico.
Nesse caso,
if
é o arquivo de entrada,of
o arquivo de saída, obs
"tamanho do bloco" - e eu usei a extensão GNU para definir o tamanho mais convenientemente. (Você também pode usar 1048576 sedd
não tiver extensão GNU.)count
É o número de blocos para lerif
e gravarof
./dev/urandom
é uma escolha melhor do que/dev/random
porque, no Linux, ele voltará a fortes dados pseudo-aleatórios em vez de bloquear quando os dados genuinamente aleatórios estiverem esgotados.Você também pode considerar http://www.random.org/ como outro caminho para obter alguns dados aleatórios sem precisar gerá-los.
fonte
1M
não estão disponíveis em todas asdd
variantes padrão . Se sua versão dodd
é afetada, usebs=1048576
.Usado para gerar 5 MB de dados aleatórios de caracteres. Se você precisar de tamanho diferente, altere o
-c
valor do cabeçalho, altere o nome do arquivo externo, execute e aguarde até a execução ser concluída.fonte