educación, informática y demás

24.13 - Repaso general

Entrada y salida da datos a ficheros

Sabemos que podemos recibir datos en tiempo de ejecución en nuestros scripts a través de:

  1. Parámetros que se pasen al ejecutar el script.
  2. Leer datos insertados por el operador a través del teclado
  3. Obtener información de comandos o aplicaciones que ejecutemos en el script
  4. Leer información de ficheros

En esta entrada nos vamos a centrar en obtener y almacenar información en ficheros.

dameInfoFichero.sh

Crea un script llamado dameInfoFichero.sh que reciba por parámetro la ruta de un fichero. Comprobará que el fichero existe y que es un fichero normal. A continuación mostrará en pantalla el contenido del fichero.

Versión 02

La diferencia con la versión 01 es que ahora mostraremos el fichero leyéndolo línea a línea. Mostraremos el número de línea actual seguido por : y después el contenido la línea.

IFS=$’\n’

showDirs.sh

Crea un script llamado showDirs.sh que recibirá por parámetro la ruta de un fichero. Comprobará que el fichero existe y que es un fichero normal, esto es un requisito indispensable para poder ejecutar el script.

El script recorrerá el fichero proporcionado por parámetro para realizar su función. Primero mostrará una lista de los directorios que existen en el sistema. Si el directorio existe en el sistema mostrará información extendida del directorio no de su contenido y un resumen de ocupación en disco del directorio en un formato comprensible por humanos.

Después mostrará una lista de los directorios que no existen en el sistema.

Version 02

Ahora, además de mostrar las listas de rutas de directorios que existen y que no existen en el sistema, el script almacenará esta información en un fichero de log cuya ruta es /etc/educatica/showDirs.log.

Si el fichero existe antes de ejecutar el script, sobrescribirá la información que hubiera con la nueva información. Como primera línea del fichero almacenaremos una marca temporal con la fecha y hora actual. La segunda línea será la ruta del fichero proporcionado al script.

A continuación, añadiremos las dos listas de directorios cómo se mostrarán en pantalla, primero los directorios que existen y después los que no existen.

mkDirs.sh

Crea un script llamado mkDirs.sh que recibirá por parámetro la ruta de un fichero. Comprobará que el fichero existe y que es un fichero normal, esto es un requisito indispensable para poder ejecutar el script.

El script recorrerá el fichero proporcionado por parámetro para realizar su función. Este fichero tendrá el siguiente formato para cada registro o línea del fichero:

  • Ruta. Primer campo del registro o línea. Determina la ruta del directorio sobre el que se va a trabajar.
  • Usuario. Campo opcional. Se utilizará si el directorio de la ruta especificada no existe y hay que crearlo. Se asignará este usuario como propietario del directorio
  • Grupo. Campo opcional. Se utilizará si el directorio de la ruta especificada no existe y hay que crearlo. Se asignará este grupo como grupo del directorio.
  • Permisos. Campo opcional. Se utilizará si el directorio de la ruta especificada no existe y hay que crearlo. Se asignará este usuario como propietario del directorio

Como campo separador se utiliza el caracter «:». Algunos ejemplos de entradas:

/educatica/share:alumno:educatica:755

/educatica/cursos/java:root:java:770

/educatica/alumnos/solgm:solgm::700

Pueden aparecer campos vacíos, lo que significa que no se utilizará ese campo o valor en el script. Debemos comprobar si se ha proporcionado el valor o no.

Primero mostrará una lista de los directorios que existen en el sistema. Si el directorio existe en el sistema mostrará información extendida del directorio no de su contenido y un resumen de ocupación en disco del directorio en un formato comprensible por humanos. Por ahora no realizaremos ninguna operación sobre el directorio.

Después, para cada directorio que no existe en el sistema, el script obtendrá la información que aparece en el fichero y se encargará de

  • Crear el directorio
  • Si se ha proporcionado nombre de usuario, configurar el directorio para que el propietario sea el usuario
  • Si se ha proporcionado nombre de grupo, configurar el directorio para que el grupo sea el grupo proporcionado
  • Si se ha proporcionado permisos, configurar el directorio para que tenga esos permisos proporcionados.

Dejar una respuesta