Scripts en Bash - Examen
Realizar un script que copie todos los ficheros que se le pasen por parámetro, al directorio misDatos. Si el directorio misDatos no existe, se deberá crear.
Realizar un script que muestre el nombre de cada uno de los ficheros pasados por parámetro y visualice su contenido por pantalla. En caso de no pasar ningún parámetro se mostrará un mensaje de error.
Realizar un script que cree un fichero de nombre Copia.tar.gz, donde se almacenen comprimidos todos los ficheros que se pasen por parámetro. En caso de no pasar ningún parámetro se mostrará un mensaje de error.
Realizar un script que muestre el nombre de cada uno de los ficheros pasados por parámetro y el tipo de fichero que es.
Contar líneas de un archivo pasado como parámetro, solo uno
Buscar palabra en archivos de un directorio
Suma de números pasados como argumentos
Copia de seguridad incremental por fecha de carpeta pasada por parámetro
Ejercicio 1
#!/bin/bash
directorio="misDatos"
# ! -d comprueba si el directorio no existe, si es true lo crea
if [ ! -d "$directorio" ]; then
mkdir "$directorio"
fi
# Recorre cada fichero en el array de ficheros $@ pasados como parámetros y los copia en directorio
for fichero in "$@"; do
if [ -e "$fichero" ]; then
cp "$fichero" "$directorio/"
fi
doneEjercicio 2
#!/bin/bash
# Comprueba si se han pasado parámetros
if [ $# -eq 0 ]; then
echo "Error: No se han pasado ficheros por parámetro."
exit 1
fi
# Recorre todos los ficheros pasados por parámetro y los muestra con cat
for fichero in "$@"; do
if [ -e "$fichero" ]; then
echo "=== Fichero: $fichero ==="
cat "$fichero"
echo ""
fi
doneEjercicio 3
if [ $# -eq 0 ]; then
echo "Error: No se han pasado ficheros por parámetro."
exit 1
fi
tar -czf Copia.tar.gz "$@"El comando crea un archivo comprimido llamado Copia.tar.gz que contiene todos los ficheros pasados como parámetros:
-c— crea un nuevo archivo tar-z— comprime con gzip-f Copia.tar.gz— nombre del fichero de salida"$@"— todos los parámetros recibidos por el script
Ejercicio 4
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Error: No se han pasado ficheros por parámetro."
exit 1
fi
for fichero in "$@"; do
if [ -e "$fichero" ]; then
tipo=$(file -b "$fichero")
echo "$fichero: $tipo"
fi
doneEl comando file -b muestra el tipo de fichero en modo reducido (brief)
Ejercicio 5
# Comprueba que se pasa un único parámetro
if [ $# -ne 1 ]; then
echo "Uso: $0 <archivo>"
exit 1
fi
wc -l < "$1"Ejercicio 6
# Comprueba que se pasan 2 parámetros
if [ $# -ne 2 ]; then
echo "Uso: $0 <directorio> <palabra>"
exit 1
fi
grep -rl "$2" "$1"-r: búsqueda recursiva en directorios-l: solo muestra nombres de archivo que contienen la coincidencia (no el contenido)
Ejercicio 7
sum=0
# Recorre el array que forman todos los parámetros
for n in "$@"; do
((sum += n))
done
echo $sumEjercicio 8
if [ $# -ne 1 ]; then
echo "Uso: $0 <directorio>"
exit 1
fi
fecha=$(date +%Y%m%d)
tar -czf "backup_${fecha}.tar.gz" "$1"
# tar -czf "backup_$(date +%Y%m%d).tar.gz" "$1" Todo en la misma linea