Introducción a los Scripts de Shell¶
Un script de shell es un archivo de texto que contiene una secuencia de comandos ejecutados por el intérprete de comandos (shell) en Linux.
Facilita la automatización de tareas repetitivas.
Combina comandos y estructuras de control para crear programas simples.
Para crear un script de shell abre un editor de texto y escribe los siguientes comandos en un archivo llamado mi_script.sh.
#!/bin/bash
# Este es un comentario
echo "Hola, mundo!"
Estructura Básica de un Script¶
Un script de shell típicamente incluye:
Shebang (#!): Indica el intérprete que ejecutará el script.
Comentarios: Líneas que comienzan con
#, ignoradas por el shell, útiles para explicar el código.Comandos: Instrucciones que ejecutarías en la terminal.
En mi_script.sh estas partes se encuentran así:
Shebang:
#!/bin/bashEsta línea indica que el script debe ejecutarse utilizando el intérprete Bash. Es la primera línea del script y esencial para su ejecución en entornos Unix y Linux.
Comentarios:
# Este es un comentarioLos comentarios se utilizan para explicar el código y no se ejecutan. En Bash, cualquier texto precedido por un símbolo de numeral (#) es tratado como comentario.
Comando Echo
echo "Hola, mundo!"
Esta línea es un comando que imprime el texto «Hola, mundo!» en la terminal. Es la parte del script que realiza una acción visible para el usuario.
El propósito de este script es demostrar la sintaxis básica de Bash, incluido
cómo iniciar un script, comentar el código y ejecutar un comando simple. Al
ejecutar este script en una terminal, se muestra el mensaje Hola, mundo! al
usuario..
Nota
Este script es un ejemplo clásico utilizado en la enseñanza de la programación para demostrar la ejecución de un programa simple.
¿Como se ejecuta un script?¶
Después de guardar tu script, para poder ejecutarlo debes darle permiso de ejecución, es decir hacerlo ejecutable:
chmod +x mi_script.sh
una vez realizado esto, para ejecutar tu script, teclea lo siguiente en la carpeta donde este:
./mi_script.sh
Preguntas:¶
¿Como puedo ejecutar un script que se encuentra en una carpeta diferente a la actual de la consola?
¿Como puedo hacer para que únicamente el propietario del archivo script, pueda ejecutar este programa?
Ejercicios:¶
Crea un script llamado
saludo.shque imprima «Hola, [tu nombre]», Haz el script ejecutable y correlo.Crea un script que muestre todos los archivos y directorios en el directorio actual.
Una posible solución es:
#!/bin/bash # Listar archivos y directorios echo "Archivos y directorios en $(pwd):" ls - ¿Que hace `$(pwd)` en este script?, - ¿Que pasa al ejecutar el script, si a esta "instrucción", le quitamos el simbolo `$`?
Herramientas de Compresión y Empaquetado¶
La compresión de archivos se refiere al proceso de reducir el tamaño de uno o más archivos mediante algoritmos específicos. Este proceso es útil para ahorrar espacio en disco y para reducir el tiempo de transmisión de archivos a través de internet o entre dispositivos. Por otro lado, el empaquetado de archivos implica agrupar varios archivos y/o directorios en un solo archivo. Aunque el empaquetado por sí mismo no reduce el tamaño de los archivos combinados, facilita su manejo, organización y distribución.
Cuando se combinan, la compresión y el empaquetado son herramientas poderosas para la gestión eficiente de archivos. Por ejemplo, al empaquetar primero varios archivos en uno y luego comprimir el paquete resultante, se puede ahorrar significativamente espacio de almacenamiento. Además, esta combinación simplifica el proceso de compartir múltiples archivos, ya que solo se necesita transferir un único archivo comprimido en lugar de varios archivos individuales. Esto es especialmente útil en contextos donde la eficiencia en la gestión de archivos y el ahorro de recursos son críticos, como en el envío de documentos por correo electrónico, la realización de copias de seguridad de datos o la distribución de software.
Uso de tar para Empaquetar Archivos¶
tar (Tape Archive) es una herramienta para empaquetar múltiples archivos
en un solo archivo (tarball), facilitando su manejo y transferencia.
Crear un tarball:
tar -cvf mi_archivo.tar /ruta/al/directorio
Extraer un tarball:
tar -xvf mi_archivo.tar
Compresión con gzip y bzip2¶
gzip y bzip2 son herramientas para comprimir archivos, reduciendo su
tamaño.
Comprimir un archivo con
gzip:gzip mi_archivoComprimir con
bzip2para una mayor tasa de compresión:bzip2 mi_archivo
Empaquetado y Compresión Combinados con tar¶
tar puede combinarse con métodos de compresión para empaquetar y comprimir simultáneamente.
Crear un tarball comprimido con
gzip:tar -czvf mi_archivo.tar.gz /ruta/al/directorio
Crear un tarball comprimido con
bzip2:tar -cjvf mi_archivo.tar.bz2 /ruta/al/directorio
Descomprimir con gzip y bzip2¶
Para revertir la compresión y recuperar el archivo original, se utilizan los comandos gunzip para archivos .gz y bunzip2 para archivos .bz2.
Descomprimir un archivo .gz:
gunzip mi_archivo.gzDescomprimir un archivo .bz2:
bunzip2 mi_archivo.bz2
Desempaquetar Archivos con tar¶
tar también permite extraer el contenido de los tarballs, ya sean comprimidos o no.
Extraer un tarball sin compresión:
tar -xvf mi_archivo.tar
Extraer un tarball comprimido con
gzip(.tar.gz o .tgz):tar -xzvf mi_archivo.tar.gz
Extraer un tarball comprimido con
bzip2(.tar.bz2):tar -xjvf mi_archivo.tar.bz2
Ejercicio: Empaquetar y Comprimir¶
Selecciona tres archivos en tu directorio actual.
Usa
tarygzippara crear un tarball comprimido de esos archivos.Envia este archivo comprimido, por correo electrónico a un compañero.
Una vez descargado el archivo, el compañero deberá extraer el contenido del archivo comprimido y verificar que los contenidos correspondan.
Ejercicio: Verificación de compresión¶
Descarga el archivo https://babel.upm.es/~angel/teaching/pps/quijote.txt.
Comprime el archivo utilizando gzip, y bzip.
Compara el tamaño de los archivos finales con el archivo original.
¿Según esta prueba, cual de los dos programas de compresión funciona mejor?
Comprime el archivo usando tar -zcvf y tar -jcvf, y compara los resultados de los tamaños de los archivos obtenidos con los del punto 2. ¿Que se puede concluir?
Nota
La descarga del archivo, se puede realizar usando firefox desde el entorno gráfico, o desde la consola usando la instrucción:
wget https://babel.upm.es/~angel/teaching/pps/quijote.txt
más información sobre el comando wget, se puede encontrar en:
man wget