Manual de Bash para Principiantes

Una guía completa desde los conceptos más básicos

Tabla de Contenidos

¿Qué es Bash?

Bash (Bourne Again SHell) es un programa que interpreta comandos, es decir, un intérprete de comandos o shell. Es la interfaz que permite a los usuarios interactuar con el sistema operativo escribiendo comandos.

Bash es el shell predeterminado en la mayoría de distribuciones Linux y en macOS (hasta la versión Catalina). Es una mejora del shell original sh (Bourne Shell) creado por Stephen Bourne.

Interfaz Gráfica (GUI)
  • Usa ventanas, iconos y menús
  • Se interactúa con el ratón
  • Más intuitiva para principiantes
  • Limitada en funcionalidad avanzada
Línea de Comandos (Bash)
  • Usa texto y comandos
  • Se interactúa con el teclado
  • Curva de aprendizaje más pronunciada
  • Potente y flexible para tareas avanzadas

💡 Consejo: Aunque al principio Bash pueda parecer intimidante, con práctica descubrirás que es una herramienta extremadamente poderosa que te permite automatizar tareas y tener un control preciso sobre tu sistema.

Primeros pasos con Bash

Acceder a Bash

Para empezar a usar Bash, necesitas abrir una terminal o consola:

$ echo "Hola Mundo" Hola Mundo

El símbolo $ representa el prompt, donde escribes los comandos. No necesitas escribirlo tú, aparece automáticamente.

El comando echo simplemente muestra el texto que le indiques.

Comandos básicos

Comando Descripción Ejemplo
pwd Muestra el directorio actual (Print Working Directory) $ pwd
/home/usuario
ls Lista archivos y directorios $ ls
Documentos Imágenes Música
cd Cambia de directorio (Change Directory) $ cd Documentos
mkdir Crea un nuevo directorio $ mkdir Proyectos
touch Crea un archivo vacío $ touch archivo.txt

📌 Nota: En Bash, los comandos y nombres de archivos son sensibles a mayúsculas y minúsculas. Archivo.txt y archivo.txt son considerados archivos diferentes.

Scripts de Bash

¿Qué es un script de Bash?

Un script de Bash es un archivo de texto que contiene una serie de comandos que Bash puede ejecutar secuencialmente. Los scripts permiten automatizar tareas repetitivas.

Los scripts de Bash suelen tener la extensión .sh, aunque esto no es obligatorio.

Estructura básica de un script

#!/bin/bash # Este es un comentario # Script de ejemplo echo "Hola Mundo"

Vamos a analizar cada parte:

  1. Shebang (#!/bin/bash): Indica qué intérprete debe ejecutar el script. Más detalles abajo.
  2. Comentarios (#): Líneas que Bash ignora, sirven para documentar el script.
  3. Comandos: Instrucciones que Bash ejecutará, en este caso echo "Hola Mundo".

El famoso Shebang (#!)

La primera línea de un script (que comienza con #!) se llama shebang (también conocido como hashbang). Le dice al sistema qué intérprete debe usar para ejecutar el script.

#!/bin/bash específicamente le dice al sistema que use Bash para interpretar el script.

📌 ¿Por qué es importante? Sin el shebang, el sistema no sabría cómo ejecutar tu script. Aunque en muchos sistemas Bash es el shell predeterminado, es una buena práctica incluirlo siempre.

Cómo crear y ejecutar un script

# 1. Crear el archivo (puedes usar nano, vim o tu editor favorito) nano hola_mundo.sh # 2. Dar permisos de ejecución chmod +x hola_mundo.sh # 3. Ejecutar el script ./hola_mundo.sh

Explicación paso a paso:

  1. Creamos el archivo con un editor de texto y guardamos el contenido del script.
  2. Usamos chmod +x para hacer el archivo ejecutable.
  3. Ejecutamos el script usando ./ antes del nombre (esto le dice a Bash que busque el script en el directorio actual).

⚠️ Importante: Si intentas ejecutar el script sin ./ (solo escribiendo hola_mundo.sh), Bash buscará el comando en tus directorios de sistema (como /bin, /usr/bin) y no lo encontrará.

Sintaxis básica

Comentarios

# Esto es un comentario de una línea : ' Este es un comentario de múltiples líneas en Bash '

Los comentarios son importantes para documentar tu código y explicar qué hace cada parte. Bash ignora todo lo que esté después de # en una línea.

Variables básicas

nombre="Juan" edad=25 echo "Hola $nombre, tienes $edad años"

En Bash, las variables se crean simplemente asignando un valor. Algunas reglas:

Entrada de usuario

echo "¿Cómo te llamas?" read nombre echo "Hola $nombre, bienvenido!"

El comando read pide al usuario que introduzca un valor y lo guarda en una variable.

Condicionales simples

echo "¿Cuál es tu edad?" read edad if [ $edad -ge 18 ]; then echo "Eres mayor de edad" else echo "Eres menor de edad" fi

Este es un ejemplo básico de una estructura condicional. Observa:

Variables en profundidad

Tipos de variables

En Bash, todas las variables son esencialmente cadenas de texto, pero se pueden usar de diferentes maneras:

Tipo Ejemplo Descripción
Cadenas nombre="Ana" Texto entre comillas
Números contador=10 Se tratan como cadenas pero se pueden usar en operaciones aritméticas
Arrays frutas=("manzana" "banana" "naranja") Listas de valores

Variables especiales

Bash tiene varias variables predefinidas que son muy útiles:

Variable Descripción
$0 Nombre del script
$1, $2, ... $9 Argumentos pasados al script
$# Número de argumentos
$? Código de salida del último comando (0 = éxito)
$$ PID (ID de proceso) del script actual
#!/bin/bash echo "Nombre del script: $0" echo "Primer argumento: $1" echo "Número de argumentos: $#"

💡 Consejo: Prueba el script anterior pasándole diferentes argumentos: ./script.sh arg1 arg2 arg3

Alternativas a Bash

Aunque Bash es el shell más popular, existen otras alternativas con diferentes características:

Shell Descripción Ventajas
sh (Bourne Shell) El shell original Más ligero, estándar POSIX
zsh Z Shell Autocompletado mejorado, temas, plugins (ahora es el shell predeterminado en macOS)
fish Friendly Interactive Shell Sintaxis más simple, colores, autosugerencias
ksh Korn Shell Compatible con scripts sh, con mejoras

📌 Nota: La mayoría de scripts escritos para Bash funcionarán en otros shells, pero algunos comandos avanzados pueden comportarse diferente. Para máxima compatibilidad, usa #!/bin/sh en lugar de #!/bin/bash en tus scripts.

¿Cómo cambiar de shell?

# Ver qué shells están instalados cat /etc/shells # Ver tu shell actual echo $SHELL # Cambiar a zsh (por ejemplo) chsh -s $(which zsh)

⚠️ Precaución: No cambies tu shell sin entender las implicaciones. Algunos sistemas dependen de que el shell predeterminado sea Bash.

Ejemplos prácticos

Script 1: Hola Mundo personalizado

#!/bin/bash # Pide el nombre al usuario y saluda echo -n "¿Cómo te llamas? " read nombre if [ -z "$nombre" ]; then echo "No me dijiste tu nombre :(" else echo "¡Hola $nombre! Bienvenido al mundo de Bash" fi

Características:

Script 2: Copia de seguridad simple

#!/bin/bash # Crea una copia de seguridad de un directorio # Variables origen="$HOME/Documentos" destino="$HOME/Backups/documentos_$(date +%Y%m%d).tar.gz" # Crear el backup tar -czf "$destino" "$origen" 2>/dev/null # Verificar si funcionó if [ $? -eq 0 ]; then echo "Backup creado en $destino" else echo "Error al crear el backup" >&2 fi

Este script demuestra:

💡 Reto: Modifica el script para que verifique si el directorio de origen existe antes de intentar hacer el backup.