Categorias

Linux: gere sequências numéricas aleatórias e realize sorteios com o comando “shuf”

Que tal falarmos novamente a respeito do Linux? Mais especificamente, sobre comandos? No Bash existem muitos comandos, como você provavelmente já sabe. Alguns podem ser um tanto quanto desconhecidos. Muitos, certamente, são extremamente úteis.

Lembre-se, porém, de que estamos falando também a respeito de algo um tanto quanto relativo, aqui: determinados comandos podem ser mais ou menos desconhecidos, dependendo do perfil e/ou do usuário em questão. É possível, portanto, que você já conheça o comando a respeito do qual falaremos abaixo (bem como a maneira como iremos utilizá-lo).

De qualquer forma, trabalhar com comandos no Linux é também algo geralmente bastante interessante, uma vez que diferentes comandos, sintaxes e argumentos opcionais podem ser combinados de diferentes maneiras, de forma tal a provocar resultados bastante distintos. Resultados estes que, dependendo da situação, podem atender a determinadas necessidades e/ou tarefas, em específico (e caso você já conheça o comando abaixo, não deixe de compartilhar seus conhecimentos conosco).

Comandos Linux

Bem, uma infinidade de tarefas pode ser realizada através de um “simples” cliente SSH, através de comandos:

Digamos, entretanto, que você deseja, ou até mesmo precisa, gerar sequências numéricas aleatórias. Digamos que você deseja gerar uma sequência aleatória com alguns números. Com, digamos, 50 (cinquenta) números, escolhidos aleatoriamente? Ou até mesmo que você deseja realizar um sorteio, para algum concurso que está promovendo, quem sabe?

Uma das alternativas mais fáceis e rápidas (além de grátis), neste caso, seria utilizar o famoso site Random.org. No entanto, para a felicidade dos amantes da linha de comando, existe uma alternativa simples, rápida e extremamente prática, disponível lá mesmo, onde você imaginou: no famoso Shell.

Gerando números aleatórios com o comando shuf

O comando “shuf” permite a geração de sequências numéricas aleatórias de forma bastante prática e rápida. Com ele, você pode realizar tais “sorteios” no próprio SSH, entre suas tarefas diárias de administração, por exemplo. Entre um comando e outro.

O “shuf” também permite que o usuário escolha qual intervalo deverá ser utilizado, qual o range (você pode especificar que deseja apenas números compreendidos entre determinado intervalo).

Veja abaixo a maneira correta de utilizá-lo:

shuf -i [numero inicial]-[numero final] -n [quantidade de resultados]

Obs: repare que o argumento “-i” está ligado ao intervalo numérico propriamente dito, enquanto o “-n” diz respeito à saída, aos resultados, à sequência que será gerada.

Observe também que é necessário especificar o valor desejado para o início da sequência numérica ([numero inicial]), o valor final ([numero final]) e também quantos números deverão ser gerados/sorteados ([quantidade de resultados]).

É bastante fácil. Basta realizar as substituições necessárias no exemplo acima e utilizar o comando no prompt. Por exemplo, para sortear 09 (nove) resultados, aleatoriamente, mesmo, entre os números 550 e 999, utilize a seguinte sintaxe:

shuf -i 550-999 -n 9

Rapidamente, um resultado semelhante ao baixo será exibido no prompt:

[~]# shuf -i 550-999 -n 9
959
721
678
807
933
869
662
924
664

E assim por diante. Lembre-se que a cada nova execução do comando, novas e diferentes sequências numéricas serão geradas. Tudo de forma aleatória.

Obs: é possível gerar um número bem grande de sequências numéricas com o “shuf”. 10, 50, 100, 1000, 5000 números diferentes, em ordens diferentes. O céu é o limite.

Exportando o resultado para um arquivo

E tudo pode ficar ainda melhor. Ao invés do resultado ser exibido na linha de comando, podemos forçar a geração de um arquivo com o mesmo (em um arquivo TXT, por exemplo).

Neste caso, utilize o comando “shuf” da seguinte maneira:

shuf -i [número inicial]-[número final] -n [quantidade de resultados] -o [caminho e nome do arquivo]

Obs: repare na adição do argumento “-o”.

Por exemplo, para gerar um arquivo TXT (chamado resultado.txt) no diretório /home/codigofonte, com 5 (cinco) resultados retirados do intervalo numérico 100 a 200, execute o comando da seguinte maneira:

shuf -i 100-200 -n 5 -o /home/codigofonte/resultado.txt

Após a execução do comando, o arquivo de texto será gerado no local especificado, com 01 (um) resultado por linha.

Finalizando

E assim por diante. Confira abaixo mais exemplos de utilização, e não se esqueça de que também é possível gerar as sequências numéricas aleatórias em um arquivo, conforme exemplo acima.

4 números escolhidos entre o intervalo 1150-2500:

[~]# shuf -i 1150-2500 -n 4
2009
1628
1675
2440

8 números escolhidos entre o intervalo 1-9:

shuf -i 1-9 -n8
2
3
9
7
5
6
1
8

Até a próxima!