Realizar sorteos desde la terminal

gshuf-manEn esta entrada hablaremos de cómo utilizar el comando “shuf” de GNU Core Utils. Shuf (de la palabra inglesa “shuffle”) es una utilidad estándar de GNU que nos simplificará la tarea de generar permutaciones aleatorias en listas, números o cadenas de texto desde cualquier shell de GNU/Linux sin necesidad de utilizar otras herramientas externas (por ejemplo, páginas web dedicadas a sacar números o listas aleatorias).

Esto nos servirá por ejemplo para realizar sorteos entre varias personas o para generar un número aleatorio sin ningún tipo de limitaciones. Este programa ya viene preinstalado en el sistema base de la mayoría de distribuciones GNU/Linux, por lo que en la mayoría de casos no requerirá instalar ningún paquete adicional.

Por defecto, lo que hace shuf es leer una lista en forma de texto que reciba por entrada estándar y devolver por salida estándar a la consola la lista barajada. Por ejemplo, si abrimos la terminal y escribimos: “ls / | shuf”, nos imprimirá por pantalla los archivos que tengamos en el directorio raíz del sistema, desordenado aleatoriamente.

gshuf-lsroot

Si ahora queremos realizar un sorteo entre varias personas, antes necesitaremos crear un archivo de texto listando el nombre, correo o cualquier otro identificador único de cada sujeto inscrito. Si no tenemos ningún archivo de texto que liste línea a línea cada una de las personas sobre las que realizar el sorteo, lo podemos crear rápidamente desde terminal usando cat o cualquier editor de textos ( como ed, sed, emacs, etc).

Nosotros vamos a generar una lista con el nombre, primer apellido y correo de cada uno de los participantes de un sorteo con cat redirigiendo la salida a un archivo llamado lista. Para terminar de escribir la lista, pulsamos Ctrl+D en una nueva línea.

gshuf-catlist

Ahora, si queremos simplemente barajar la lista, escribimos:

Siendo “lista” el nombre del archivo de lista que tengamos creado.

gshuf-shuffled

De esta forma nos generará una lista del mismo tamaño del archivo que le hayamos pasado por parámetro o por entrada estándar, pero con las líneas desordenadas aleatoriamente. Si la lista aleatoria generada es muy extensa o si la queremos conservar en un archivo de texto, podemos redirigir la salida de shuf a un fichero utilizando el operador de descriptor de archivo “>” como hemos hecho antes con cat:

Si en su lugar queremos sacar un número limitado de resultados, al comando shuf le pasaremos la opción “-n X” sin las comillas, siendo X un número entero correspondiente al número de resultados que queramos sacar.

Así, si escribimos el siguiente comando, limitaremos los resultados del sorteo a una sola persona:

gshuf-shufn1

Para sorteos rápidos y sin necesidad de crear un archivo de lista, también podemos utilizar la opción “-e” de shuf, pasándole a continuación los nombres de los candidatos a sortear separados por espacios. Podemos encerrar entre comillas cada uno de los candidatos que pasemos por parámetro en caso de que alguno contenga espacios.

Por ejemplo, para jugar a “piedra, papel o tijeras” con la terminal sacando un sólo candidato aleatorio (-n 1) de entre tres posibles, escribiendo en el shell:

O bien podemos realizar un sorteo numérico en un intervalo específico con la opción “-i X-Y”, siendo X el número entero mínimo del intervalo e Y el valor máximo. Si queremos sacar tres números aleatorios (-n 3) del 1 al 100, ambos inclusive, escribimos:

Como puedes ver, este comando tiene muchas aplicaciones posibles, sobre todo si le echas imaginación 😉

Hasta aquí algunos usos básicos que se le puede dar a la utilidad shuf en cualquier distribución GNU/Linux. Si tienes ganas de experimentar otras opciones con este comando, puedes consultar su página del manual o su documentación desde la terminal, introduciendo uno de los dos comandos de a continuación:

Acerca de Felfa

Felfa
... pero también puedes llamarme Álex.Estudiante de ingeniería informática en la UA y de DAM. Devoto del software libre, de la retroinformática y del retrogaming.

Visita también

Convertir un vídeo a divx compatible

Hola a todos, esta es mi primera contribución a este sitio y para empezar vamos …

Deja una respuesta

6 Comentarios En "Realizar sorteos desde la terminal"

Notificarme las
avatar
luis javier
Invitado

como haga para generar una combinacion numerica de 5 numeros ejemplo del 01 al 75 y 01 al 69

trackback

[…] En esta entrada hablaremos de cómo utilizar el comando "shuf" de GNU Core Utils. Shuf (de la palabra inglesa "shuffle") es una utilidad estándar de GNU que nos  […]

Mikel Garin
Invitado

Muy bueno! me ha encantado este comando que no conocía! El bombo a muerto! Viva el shuf!!!

trackback

Información Bitacoras.com

Valora en Bitacoras.com: En esta entrada hablaremos de cómo utilizar el comando “shuf” de GNU Core Utils. Shuf (de la palabra inglesa “shuffle”) es una utilidad estándar de GNU que nos simplificará la tarea de generar permutaciones aleator…

wpDiscuz