Información
Actualidad
Aquí encontraras noticias de actualidad sobre Gnu Linux y Open Source.

Además de información sobre la comunidad LiGNUx.
Distribuciones y entornos
Información ordenada sobre los diferenes sistema operativos Gnu Linux y las diferentes opciones de entornos gráficos.
Tutoriales y guías
Todos los pasos e informaciones que puedes desear para tu día a día.
Tutoriales
Tutoriales
Programación
Programación
About Us
Get to know the people behind the code and the mission behind the work
how we handle data
Privacy
Security
Legal

Realizar sorteos desde la terminal

28 octubre, 2016

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:

Escrito por 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.

Suscribirse
Notificarme las
guest
6 Comentarios
Los más recientes
Los más antiguos Más votados
Feedbacks en línea
Ver todos los comentarios
LiGNUx trabaja sobre una licencia de Creative Commons Reconocimiento 4.0 Internacional.
cloudflagpaperclipprinterfile-emptyfilm-playcamera-videopicturelaptop-phonebriefcasecrossmenu
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram