¿Qué es Bash? Guía sobre el shell para principiantes de Linux y su encanto
Cuando creas sitios web, tarde o temprano te encontrarás con la "pantalla negra", es decir, la terminal (CUI), para operaciones del servidor. Muchos diseñadores y programadores pueden sentir que "parece difícil..." o "preferiría evitarlo...". Sin embargo, si conoces un poco sobre Bash, el programa interactivo que se usa en esa pantalla negra, tu eficiencia en el trabajo mejorará drásticamente y el mundo de la creación web se expandirá.
En este artículo, explicaremos qué es Bash y cómo usarlo en términos sencillos y amigables, para que incluso los principiantes en Linux y operaciones de servidor puedan tener su momento de "¡Ajá!". Hemos preparado un montón de ejemplos que puedes copiar y pegar para experimentar cómo "funciona", cubriendo desde operaciones esenciales de archivos hasta técnicas básicas para automatizar tareas tediosas y repetitivas. ¡Convirtamos ese miedo a la pantalla negra en la emoción de adquirir una nueva herramienta!
Para empezar, ¿qué es un shell? ¿Y qué es Bash?
Antes de hablar de Bash, primero entendamos a su "jefe", el shell.
El shell: un "intérprete" que te conecta con el SO
En el corazón de un ordenador se encuentra el kernel, un programa que se encarga de las funciones más fundamentales del sistema operativo, como la gestión del hardware. Pensemos en el kernel como un rey. Nosotros no podemos darle órdenes directamente al rey (el kernel).
Ahí es donde entra en juego el shell. El shell es como un "intérprete" o un "secretario" que traduce nuestras palabras (comandos) a un lenguaje que el rey puede entender. Cuando escribimos un comando en el teclado, el shell lo recibe, lo interpreta y se lo comunica al kernel para que ejecute la orden. Esa "pantalla negra" es donde opera este shell.
Bash: el "intérprete" más popular
Así como hay muchos tipos de intérpretes, también hay varios tipos de shells (zsh, fish, csh, etc.). Entre ellos, el más utilizado y estándar en Linux y macOS hoy en día es Bash (Bourne-Again SHell). A menos que tengas una razón específica, puedes asumir que el shell que usarás en un servidor es casi seguro que será Bash. En otras palabras, puedes considerar que aprender a usar Bash es lo mismo que aprender las operaciones básicas de comandos de Linux.
¡Manos a la obra! Comandos básicos de Bash
Ver para creer. Probemos algunos comandos básicos de inmediato. Abre la "Terminal.app" en macOS, o un entorno de terminal como WSL o Git Bash en Windows, luego copia y pega los siguientes comandos y presiona Enter.
pwd - Comprobar tu ubicación actual
pwd (Print Working Directory) es un comando que te dice, "¿En qué carpeta (directorio) estoy ahora mismo?". Si alguna vez te sientes perdido, escribe esto primero.
$ pwd
/Users/yourname/Documents
ls - Listar los archivos y carpetas internos
ls (List) muestra una lista de archivos y carpetas en el directorio actual.
$ ls
ProjectA ProjectB memo.txt
Añadir la opción -l te permite ver información más detallada, como los permisos de los archivos, las fechas de modificación y más.
$ ls -l
total 8
drwxr-xr-x 3 yourname staff 96 Jul 5 10:00 ProjectA
drwxr-xr-x 5 yourname staff 160 Jul 5 10:01 ProjectB
-rw-r--r-- 1 yourname staff 512 Jul 5 10:02 memo.txt
cd - Moverse a otra carpeta
cd (Change Directory) es el comando para moverse a otro directorio. Es como viajar de un pueblo a otro en un juego de rol.
$ cd ProjectA
Especificar .. (dos puntos) te permite retroceder al directorio padre.
$ cd ..
Crear y eliminar archivos y carpetas
Lo básico de las operaciones de línea de comandos es crear, mover y eliminar archivos y carpetas. Con Bash, esto es instantáneo.
mkdir - Crear una nueva carpeta
mkdir (Make Directory) crea una nueva carpeta vacía.
$ mkdir new-website
touch - Crear un nuevo archivo vacío
El comando touch te permite crear un archivo vacío. Es útil para crear plantillas de archivos HTML o CSS.
$ touch index.html
echo y > - Escribir texto en un archivo
echo es un comando que imprime una cadena de texto especificada en la pantalla. Cuando se combina con el símbolo > (redirección), puedes cambiar el destino de la salida de la pantalla a un archivo, escribiendo así contenido en él.
$ echo "<h1>Hello, Bash!</h1>" > index.html
Nota: > sobrescribirá el archivo. Si quieres añadir contenido a un archivo, usa >> en su lugar.
cat - Mostrar el contenido de un archivo
Puedes usar el comando cat para mostrar el contenido de un archivo en la terminal. Comprobemos el contenido que acabamos de escribir.
$ cat index.html
<h1>Hello, Bash!</h1>
rm - Eliminar archivos o carpetas
rm (Remove) es un comando para eliminar archivos y carpetas. Este comando es muy potente; elimina los archivos de forma inmediata y permanente sin enviarlos a la papelera, y no se puede deshacer. Antes de usarlo, comprueba siempre que estás eliminando lo correcto con pwd y ls.
$ rm index.html
Para eliminar una carpeta y todo su contenido, necesitas la opción -r (Recursive).
$ rm -r old-website
¡El verdadero poder de Bash! Encadenando comandos con pipes
Una de las características más potentes de Bash es el pipe |. Esta es una función que "encadena" la salida de un comando para que se convierta en la entrada del siguiente. Imagina una cinta transportadora de una fábrica, pasando los artículos de una estación de procesamiento a la siguiente.
Por ejemplo, si quieres "listar todos los archivos en detalle (ls -l), y luego de esa lista, mostrar solo las líneas que contienen la palabra 'index' (grep index)", los encadenarías así:
$ ls -l | grep "index"
-rw-r--r-- 1 yourname staff 23 Jul 5 10:30 index.html
-rw-r--r-- 1 yourname staff 1024 Jul 5 10:31 index.php
La belleza de Bash es que puedes lograr operaciones complejas en una sola línea combinando comandos simples como este.
Introducción a los scripts de Bash para la automatización
Escribir la misma combinación de comandos una y otra vez es tedioso, ¿verdad? En tales casos, puedes guardar una serie de comandos en un archivo y ejecutarlos todos a la vez. Esto es un script de Bash.
Por ejemplo, digamos que cada vez que inicias un nuevo proyecto de sitio web, siempre creas la misma estructura de carpetas (css, js, images) y un archivo `index.html`. Creemos un script llamado `create_project.sh` para automatizar esta tarea.
#!/bin/bash
# Crear una carpeta de proyecto con el nombre especificado en tiempo de ejecución
PROJECT_NAME=$1
mkdir $PROJECT_NAME
cd $PROJECT_NAME
# Crear varias subcarpetas
mkdir css js images
# Crear archivos HTML y CSS vacíos
touch index.html css/style.css
echo "Project '$PROJECT_NAME' created successfully!"
Crea un archivo llamado `create_project.sh` con este contenido, y luego dale permisos de ejecución con el comando `chmod +x`.
$ chmod +x create_project.sh
Después de eso, solo necesitas ejecutarlo como `./create_project.sh nombre-del-proyecto`, y la tarea rutinaria se completará en un instante.
$ ./create_project.sh my-new-dream-site
Project 'my-new-dream-site' created successfully!
Resumen
¡Buen trabajo! En este artículo, aprendimos sobre los conceptos básicos y el uso del shell, el programa detrás de la pantalla negra, y su representante más prominente, Bash. Puede parecer inaccesible al principio, pero al probar realmente algunos de los comandos presentados aquí, probablemente hayas experimentado una muestra de su conveniencia y poder.
- Comprueba tu ubicación actual y muévete libremente con
pwd,lsycd. - Manipula libremente archivos y carpetas con
mkdir,touchyrm. - Encadena comandos con el pipe
|para lograr operaciones complejas de forma sencilla. - Automatiza de forma inteligente las tareas rutinarias poniéndolas en un script de Bash.
Para un creador web, Bash puede ser un arma tan poderosa como las herramientas de diseño o los editores de código. Te animamos a que sigas aprendiendo algunos comandos poco a poco y los apliques a tu trabajo diario.
Para aquellos que piensan, "Pero mi PC con Windows no tiene Bash...", ¡no se preocupen! En el próximo artículo, explicaremos cómo instalar "WSL (Subsistema de Windows para Linux)", que facilita el uso de Bash en Windows, ¡con imágenes para guiarte!
[¡Úsalo en Windows!] Pasos para instalar Bash con WSL (con imágenes)