Advertisement
Guest User

pmt-nicks fanta

a guest
Mar 28th, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.73 KB | None | 0 0
  1. #!/bin/bash
  2. # pmt-nicks
  3. # Sencillo script para generar nombres y apellidos aleatorios
  4. # Este script en bash es parte de Puppter Master Tweet y se
  5. # utiliza para generar nombres de personas y nicks acordes.
  6. # fanta <fanta@elbinario.net>
  7.  
  8. # Archivos y variables
  9.  
  10. archivo_nombres="../diccionarios/nombres.txt" # Path del archivo que contiene los nombres. Los nombres no pueden contener el caracter ;
  11. archivo_apellidos="../diccionarios/apellidos.txt" # Path del archivo que contiene los apellidos, Los apellidos no pueden contener el caracter ;
  12.  
  13. version="0.1" # versión del programa
  14. nombre_programa="pmt-nicks" # nombre del programa
  15.  
  16. nnombres=$(cat $archivo_nombres | wc -l) # número de nombres en el archivo
  17. napellidos=$(cat $archivo_apellidos | wc -l) # número de apellidos en el archivo
  18.  
  19. # Errores
  20.  
  21. error1="Error: Ha de introducir un argumento"
  22. error2="Demasiados argumentos"
  23.  
  24. # Funciones
  25.  
  26. function muestraayuda {
  27.     echo -e "$nombre_programa - $version"
  28.         echo -e "-h --help\t\t Muestra esta ayuda."
  29.         echo -e "-v --version\t\t Muestra la versión."
  30.         echo -e "-n --nick\t\t Genera un nick aleatorio."
  31.         echo -e "-a --nya\t\t Genera un nombre y un apellido."
  32.         echo -e "-b --ny2a\t\t Genera un nombre y dos apellidos."
  33.         echo -e "-c --nny2a\t\t Genera un nombre, dos apellidos y un nick acorde."
  34.     echo -e "-d --nny2acsv\t\t Genera un nombre, dos apellidos y un nick acorde en valores separados por ;"
  35. }
  36.  
  37. function generanombre {
  38.     rnnombres=`echo $(($RANDOM%$nnombres))` # Obtenemos un número aleatorio entre 1 y el número de nombres.
  39.     elnombre=$(cat $archivo_nombres | head -$rnnombres | tail -1) # obtenemos el nombre aleatorio
  40.     echo "$elnombre" # Escupimos el nombre
  41. }
  42.  
  43. function generaapellido {
  44.     rnapellidos=`echo $(($RANDOM%$napellidos))` # Obtenemos un número aleatorio entre 1 y el número de apellidos.
  45.     elapellido=$(cat $archivo_apellidos | head -$rnapellidos | tail -1) # Obtenemos el apellido aleatorio
  46.         echo "$elapellido" # Escupimos el apellido
  47. }
  48.  
  49. function generanick {
  50.     # Esta función escupe realmente 3 datos: nombre, apellido y nick separados por ;
  51.     # El nick se generará en base al nombre y primer apellido. No se genera aquí segundo apellido.
  52.  
  53.     elnombre=$(generanombre) # almacenamos el nombre seleccionado aleatoriamente
  54.     elapellido=$(generaapellido) # almacenamos el apellido seleccionado aleatoriamente
  55.     ncelnombre=$(echo "${#elnombre}") # contamos los caratactes del nombre y los almacenamos
  56.     ncelapellido=$(echo "${#elapellido}") # contamos los caracteres del apellido y los almacenamos
  57.  
  58.     if [ "$ncelnombre" -ge 4 ]; then # Entra si el n de caracteres del nombre es mayor o igual a 4
  59.         nickparte1=$(echo $elnombre | cut -c 1-4) # recortamos los primeros 4 caracteres
  60.         ncnickparte1=4 # Sabemos que tiene 4 caracteres
  61.     else # Entra si el n de caracteres del nombre es menor de 4
  62.         nickparte1=$(echo $elnombre)
  63.         ncnickparte1=$(echo "${#nickparte1}") # contamos los caratactes de la primera parte del nick
  64.     fi
  65.  
  66.     if [ "$ncelapellido" -ge 4 ]; then # Entra si el n de caracteres del apellido es mayor o igual a 4
  67.         nickparte2=$(echo $elapellido | cut -c 1-4) # recortamos los primeros 4 caracteres
  68.         ncnickparte2=4 # Sabemos que tiene 4 caracteres
  69.     else # Entra si el n de caracteres del apellido es menor de 4
  70.         nickparte2=$(echo $elapellido)
  71.         ncnickparte2=$(echo "${#nickparte2}") # contamos los caratactes de la segunda parte del nick
  72.     fi
  73.     # Ahora vamos a echar cuentas. El nick tendrá 8 caracteres y en caso de tener menos se rellena
  74.     elnick=$(echo "$nickparte1$nickparte2" | tr '[:upper:]' '[:lower:]') # el nick en minusculas
  75.     ncelnick=$(echo "${#elnick}") # contamos los caratactes del nick
  76.  
  77.     if [ "$ncelnick" -eq 8 ]; then # Entra si el n de caracteres del nick es igual a 8
  78.         echo "$elnombre;$elapellido;$elnick" # Escupimos el nombre, primer apellido y el nick
  79.     else
  80.         rellenodechocolate=`echo $(($RANDOM%99999))`
  81.         elnick="$(echo "$elnick$rellenodechocolate" | cut -c 1-8)" # rellenamos y cortamos sobrante
  82.         echo "$elnombre;elapellido;$elnick" # Escupimos el nombre, primer apellido y el nick
  83.     fi
  84. }
  85.  
  86. # El control de argumentos. La parte main del script como quien dice.
  87.  
  88. if [ "$#" -eq 0 ]; then # Cuando el usuario no mete ningún parametro
  89.     echo -e "$error1" # le mostramos el error
  90.     muestraayuda # le mostramos la ayuda
  91. fi
  92.  
  93. if [ "$#" -eq 1 ]; then
  94.     if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then # cuando el usuario usa el argumento -h
  95.         muestraayuda # le mostramos la ayuda
  96.     fi
  97.  
  98.         if [ "$1" == "-v" ] || [ "$1" == "--version" ]; then # cuando el usuario usa el argumento -v
  99.                 echo -e "$nombre_programa - $version" # le mostramos la versión de este script
  100.         fi
  101.  
  102.         if [ "$1" == "-n" ] || [ "$1" == "--nick" ]; then # cuando el usuario usa el argumento -n
  103.         nickencrudo=$(generanick) # Almacenamos los datos que nos da la función generanick
  104.         echo "$nickencrudo" | cut -d ";" -f 3
  105.         fi
  106.  
  107.         if [ "$1" == "-a" ] || [ "$1" == "--nya" ]; then # cuando el usuario usa el argumento -a
  108.                 echo "$(generanombre) $(generaapellido)" # Mostramos el nombre y el apellido
  109.         fi
  110.  
  111.         if [ "$1" == "-b" ] || [ "$1" == "--ny2a" ]; then # cuando el usuario usa el argumento -b
  112.         echo "$(generanombre) $(generaapellido) $(generaapellido)" # Mostramos el nombre y 2 apellidos
  113.         fi
  114.  
  115.         if [ "$1" == "-c" ] || [ "$1" == "--nny2a" ]; then # cuando el usuario usa el argumento -c
  116.                 nickencrudo=$(generanick) # Almacenamos los datos que nos da la función generanick
  117.                 nombre=$(echo "$nickencrudo" | cut -d ";" -f 1) # Extraemos el nombre
  118.         apellido1=$(echo "$nickencrudo" | cut -d ";" -f 2) # Extraemos el apellido1
  119.         apellido2=$(generaapellido) # Generamos un apellido2
  120.         nick=$(echo "$nickencrudo" | cut -d ";" -f 3) # Extraemos el nick
  121.         echo "$nombre $apellido1 $apellido2 $nick" # Mostramos el nombre, apellido1, apellido2 y nick
  122.         fi
  123.  
  124.         if [ "$1" == "-d" ] || [ "$1" == "--nny2acsv" ]; then # cuando el usuario usa el argumento -d
  125.                 nickencrudo=$(generanick) # Almacenamos los datos que nos da la función generanick
  126.                 nombre=$(echo "$nickencrudo" | cut -d ";" -f 1) # Extraemos el nombre
  127.                 apellido1=$(echo "$nickencrudo" | cut -d ";" -f 2) # Extraemos el apellido1
  128.                 apellido2=$(generaapellido) # Generamos un apellido2
  129.                 nick=$(echo "$nickencrudo" | cut -d ";" -f 3) # Extraemos el nick
  130.                 echo "$nombre;$apellido1;$apellido2;$nick" # Mostramos el nombre, apellido1, apellido2 y nick separados por ;
  131.         fi
  132. fi
  133.  
  134. if [ "$#" -ge 2 ]; then # Cuando el usuario mete más de 1 parametro
  135.         echo -e "$error2" # le mostramos el error
  136.         muestraayuda # le mostramos la ayuda
  137. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement