Manual de Bash: guía completa de la línea de comandos en Linux

Última actualización: 6 de marzo de 2026
Autor: Vinagre
  • Bash es la shell estándar en Linux y permite ejecutar comandos, escribir scripts y automatizar tareas.
  • Dominar comandos básicos como cd, ls, cat, head, mv o rm es esencial para moverse por el sistema.
  • Las redirecciones, pipes y variables de entorno convierten a Bash en una herramienta muy flexible y potente.
  • Herramientas como man, htop, nano o lsof amplían las posibilidades de administración desde la terminal.

Guía de comandos Bash en Linux

Si usas Linux a diario o estás empezando en el mundillo, tarde o temprano vas a toparte con la línea de comandos y el shell Bash. Lejos de ser algo “solo para frikis”, dominar Bash te ahorra tiempo, te permite automatizar tareas repetitivas y te da un control fino sobre tu sistema que ninguna interfaz gráfica puede igualar.

En esta guía vas a encontrar un manual de Bash explicado en español de España, con ejemplos prácticos y comentarios claros. Verás desde qué es exactamente Bash y cómo se usa en la terminal, hasta los comandos más habituales, redirecciones, pipes y variables de entorno. La idea es que puedas ir leyendo y probando a la vez, sin necesidad de memorizar todo de golpe.

Qué es Bash y por qué es tan importante en Linux

Bash, siglas de Bourne Again SHell, es una shell de Unix que interpreta comandos. Dicho de forma sencilla, es el programa que se encarga de leer lo que escribes en la terminal, ejecutarlo y mostrarte el resultado.

Una shell es básicamente un macroprocesador interactivo: recibe órdenes (comandos), los procesa, puede expandir variables, sustituir comandos dentro de otros y luego los pasa al sistema para que se ejecuten. Bash es la shell por defecto en la mayoría de distribuciones Linux modernas y también se usa en macOS (aunque Apple ha ido moviéndose hacia zsh).

Con Bash puedes hacer prácticamente de todo en el sistema: editar archivos, descargar páginas web, mover ficheros, gestionar procesos, configurar la red, automatizar copias de seguridad, lanzar scripts complejos, etc. Muchas interfaces gráficas no son más que “capas bonitas” encima de comandos que, por debajo, podrías ejecutar en Bash.

Por eso, aprender Bash no es solo un capricho técnico, sino una forma de ganar potencia y flexibilidad cuando trabajas con Linux o con servidores remotos. Y además, es la base para entender muchos scripts y herramientas de administración de sistemas.

Usar Bash desde la terminal (Linux y macOS)

Para comenzar a utilizar Bash en un sistema Linux o en macOS, basta con abrir una terminal o emulador de terminal. En la mayoría de escritorios encontrarás un icono de “Terminal”, “Konsole”, “GNOME Terminal” o similar.

Al abrirla verás un prompt, algo parecido a:

usuario@equipo:~$

Ese símbolo del dólar indica que la shell está lista para recibir un comando. Por ejemplo, para imprimir un mensaje sencillo en pantalla puedes escribir:

echo "Hola Mundo!"

El comando echo simplemente muestra por la salida estándar el texto que le pases. Verás algo así:

usuario@equipo:~$ echo "Hola Mundo!"
Hola Mundo!

Cada vez que ejecutas algo en Bash, este se encarga de interpretar el comando, gestionar argumentos, variables y redirecciones, y devolver el resultado o los errores que se produzcan.

Escribir y ejecutar scripts en Bash

Además de introducir comandos uno a uno, Bash permite agruparlos en un archivo con extensión .sh (o sin extensión si quieres) y ejecutarlos como un programa. Eso es lo que se conoce como un script de Bash.

Imagina que quieres tener un pequeño script que muestre un saludo. Crea un archivo, por ejemplo hola.sh, con este contenido básico:

#!/bin/bash
echo "Hola Mundo!"

La primera línea comienza con #! (shebang). Esta secuencia especial le indica al sistema qué intérprete debe usar para ejecutar el archivo. En este caso, /bin/bash es la ruta estándar del ejecutable de Bash en la mayoría de sistemas Unix y Linux.

Cuando ejecutas el script como un programa, por ejemplo:

./hola.sh

El sistema inspecciona esa primera línea para saber que debe lanzar /bin/bash con ese archivo como entrada. Si en lugar de eso haces:

bash hola.sh

Entonces el shebang se ignora, porque ya estás invocando directamente al intérprete y le pasas el archivo como argumento, por lo que no necesita mirar la cabecera.

Para poder ejecutar un script con ./nombre_script, el archivo necesita tener permiso de ejecución. Si te aparece un error del estilo “Permiso denegado”, ve a la carpeta donde está el script y usa:

chmod u+x hola.sh

Con esto le concedes permiso de ejecución al usuario propietario (la u de user). Si lo prefieres, también puedes usar algo como sudo chmod +x hola.sh en situaciones donde necesites privilegios de administrador.

Una vez dado el permiso, ya podrás lanzar el script con:

./hola.sh

Y verás de nuevo el mensaje Hola Mundo! en la terminal. A partir de aquí, puedes ir añadiendo más comandos, estructuras de control, funciones y todo lo que ofrece Bash como lenguaje de scripting.

Moverse por el sistema de archivos: pwd, cd, ls y tree

Una de las primeras cosas que necesitas dominar en Bash es cómo navegar por directorios. Aquí entran en juego varios comandos muy básicos, pero imprescindibles en el día a día.

El comando pwd (print working directory) muestra la ruta absoluta del directorio actual. Si lo ejecutas verás algo como:

/home/usuario/proyectos

Para cambiar de carpeta tienes cd (change directory). Puedes pasarle rutas absolutas o relativas. Por ejemplo:

  • cd /home/usuario te lleva directamente al directorio indicado.
  • cd proyectos entra en la carpeta proyectos que esté dentro del directorio actual.
  • cd .. sube un nivel en el árbol de directorios.
  • cd ../.. sube dos niveles.
  • cd ~ te lleva a tu carpeta personal (home del usuario).

También son importantes algunos símbolos especiales: . representa el directorio actual (por ejemplo, ./script.sh ejecuta un archivo del directorio donde estás), mientras que .. representa el directorio padre.

Para ver qué hay dentro de una carpeta se usa ls, que lista el contenido de un directorio. Sin parámetros, ls muestra los archivos del directorio en el que te encuentras, pero puedes pasarle también una ruta concreta:

ls
ls /home/usuario

Algunas opciones útiles de ls son:

  • -a: muestra todos los archivos, incluidos los ocultos (los que empiezan por un punto).
  • -l: muestra un listado detallado con permisos, propietario, tamaño, fecha, etc.
  • -G: en listados largos, omite el nombre del grupo.

Por ejemplo, ls -la ofrece una vista detallada de todo, incluidos archivos ocultos, lo cual viene genial para inspeccionar permisos y propietarios.

Si quieres una visión más estructurada de una carpeta y sus subcarpetas, puedes utilizar tree, que muestra un árbol de directorios a partir de la ruta indicada (o desde el directorio actual si no se especifica ruta). No siempre viene instalado por defecto, pero suele poder añadirse fácilmente con el gestor de paquetes de tu distribución.

Crear, copiar, mover y borrar archivos y directorios

En Bash tienes comandos muy sencillos para gestionar archivos y carpetas. Aprenderlos te permitirá trabajar cómodamente sin depender de un gestor de archivos gráfico.

Para crear directorios vacíos se usa mkdir (make directory). Por ejemplo:

mkdir informes

Este comando crea una carpeta llamada informes en el directorio actual. También puedes crear rutas completas, y con la opción -p se crean subdirectorios intermedios si no existen.

Para crear archivos vacíos o actualizar su fecha de modificación empleamos touch. Por ejemplo:

touch notas.txt

Si el archivo no existe, se crea; si ya existe, simplemente se actualiza su timestamp de última modificación, lo cual tiene su utilidad en algunos contextos.

Copiar archivos se hace con cp (copy). El uso básico es:

cp origen destino

Por ejemplo, cp notas.txt copia_notas.txt genera una copia con otro nombre en el mismo directorio. También puedes usar rutas completas, copiar varios archivos a una carpeta, o añadir opciones como -r para copiar directorios de forma recursiva.

Para mover o renombrar archivos está mv (move). La sintaxis es muy parecida:

mv origen destino

Si el destino es un nombre de archivo, renombras el fichero. Si es un directorio, lo mueves dentro de esa carpeta. Algunas opciones típicas son:

  • -f: fuerza el movimiento, sobrescribiendo sin preguntar.
  • -i: pide confirmación si va a sobrescribir algo existente.

Para eliminar archivos se utiliza rm (remove). Un uso básico sería:

rm archivo.txt

Ten en cuenta que rm no envía nada a la papelera, borra directamente. Úsalo con cuidado, y más todavía si metes cosas como rm -r (borrado recursivo de directorios) o rm -rf, que combina recursivo y forzado.

Ver el contenido de archivos: cat, less, head, tail y más

Muchos trabajos en la consola consisten en inspeccionar o filtrar el contenido de ficheros. Para eso, Bash ofrece una colección de comandos muy prácticos que conviene conocer bien.

El comando cat (concatenate) sirve para imprimir en la terminal el contenido de uno o varios archivos. Por ejemplo:

cat archivo.txt

Esto muestra el contenido completo del archivo. Si pasas varios ficheros, cat los concatena uno detrás de otro:

cat archivo1.txt archivo2.txt

Algunas opciones útiles de cat son:

  • -b: numera solo las líneas que tienen contenido.
  • -n: numera todas las líneas.
  • -s: reduce grupos de líneas vacías consecutivas a una sola.
  • -v: muestra caracteres no imprimibles (salvo tabulaciones y fin de línea).

Cuando el archivo es muy largo, puede ser más cómodo usar less, que permite desplazarte arriba y abajo con las teclas de cursor, Page Up/Down, etc. Se usa así:

less archivo.log

Con q sales del visor. less es ideal para revisar logs, ficheros de configuración largos o cualquier archivo de texto de gran tamaño.

Si solo quieres revisar el principio de un archivo, tienes head, que por defecto muestra las primeras 10 líneas:

head archivo.txt

Con la opción -n N puedes indicar cuántas líneas quieres ver:

head -n 7 archivo.txt

Si pasas varios archivos, head mostrará el comienzo de cada uno, y puede incluir o no un encabezado con el nombre del fichero mediante las opciones:

  • -q: no muestra encabezados.
  • -v: siempre muestra encabezados.

En la parte opuesta está tail, que imprime por defecto las últimas 10 líneas de un archivo:

tail archivo.log

Además, tail tiene una opción muy usada, -f, que permite seguir en tiempo real lo que se va añadiendo al final del archivo. Es perfecta para observar cómo crece un log mientras un programa se ejecuta:

tail -f archivo.log

Si quieres todavía más control visual, una combinación muy común es usar less con la tecla Shift+F, que hace algo parecido al seguimiento de tail -f pero permitiendo pausar con Ctrl+C para moverte tranquilamente por el contenido.

Para inspeccionar ficheros en formato binario o ver su representación hexadecimal, existe hexdump, que imprime el contenido en hexadecimal. Es una herramienta muy utilizada a nivel de sistemas o cuando se trabaja con estructuras de datos de bajo nivel.

Si necesitas filtrar líneas que contienen cierto patrón, el comando estrella es grep. Su función es buscar coincidencias de texto y mostrar solo lo que casa con el criterio. Por ejemplo:

grep "error" archivo.log

Mostrará únicamente las líneas de archivo.log que contengan la palabra “error”. Combinado con pipes, grep se convierte en una herramienta potentísima para analizar resultados de otros comandos.

Consultar ayuda: man y documentación

Aunque los manuales externos van muy bien, la documentación definitiva de Bash y del resto de comandos de Linux suele estar integrada en el propio sistema mediante las páginas de manual, a las que accedemos con el comando man.

Si quieres ver la documentación de un comando concreto, basta con escribir:

man ls

Esto abrirá la página de manual de ls, donde podrás ver descripción, opciones, ejemplos y más. Para moverte se usa algo similar a less, y sales con la tecla q.

man no sirve solo para comandos de consola; también se puede usar para funciones estándar del lenguaje C y otras interfaces del sistema. Por ejemplo, man fopen abre la documentación de la función fopen().

Algunas opciones interesantes de man son:

  • -f: muestra una breve descripción de la página correspondiente (equivalente a whatis).
  • -a: recorre en sucesión todas las posibles páginas de manual que se correspondan con ese nombre.

Monitoreo del sistema y herramientas útiles

Cuando se trabaja con Bash en entornos de desarrollo o en servidores, es habitual tener que vigilar procesos, consumo de recursos y configuración de red. Para ello hay varios comandos muy prácticos.

Uno de los más conocidos es htop, un visor interactivo de procesos que muestra el consumo de CPU, memoria RAM y otros datos en tiempo real. A diferencia del clásico top, es más amigable y permite acciones con el teclado e incluso el ratón.

Con htop puedes ordenar procesos por PID, nombre, uso de CPU o RAM, filtrar por nombre usando la tecla F4, y enviar señales (como SIGTERM o SIGKILL) a uno o varios procesos desde el menú de F9. Es perfecto para detectar esperas activas, fugas de memoria o procesos colgados.

Para consultar la configuración de red de la máquina, una herramienta clásica es ifconfig. Con ella puedes ver la IP asignada a cada interfaz, máscaras de red, estado de las interfaces, etc. En sistemas más nuevos suele recomendarse usar ip addr, pero ifconfig sigue siendo muy conocido y usado, sobre todo en documentación antigua.

Si necesitas comprobar qué procesos están usando un determinado puerto o qué ficheros tiene abiertos un programa, el comando adecuado es lsof (list open files). Se integra muy bien con el flag -i para examinar puertos de red, por ejemplo:

lsof -i :8080

Con esto verás qué proceso está escuchando en el puerto 8080, algo muy útil antes de lanzar servicios que necesiten ese mismo puerto.

Para editar archivos de configuración de forma rápida y sin salir de la consola, una buena opción es nano. Es un editor de texto sencillo, muy intuitivo y perfecto cuando no quieres liarte con editores más avanzados como vim o emacs.

Por ejemplo, si ejecutas:

nano config.txt

Se abrirá el archivo (o se creará si no existe) dentro de la terminal. Puedes escribir texto normal, pegar con Ctrl+Shift+V, y para salir usas Ctrl+X. Nano te preguntará si quieres guardar los cambios (respondiendo y) y después te pedirá confirmar el nombre del archivo con Enter.

Otro comando particular es loadkeys, que se usa para cambiar el mapa de teclado de la sesión. Por ejemplo, en algunas máquinas virtuales puedes necesitar pasar de un teclado en español a uno en inglés (US) de forma temporal. El cambio se aplica solo a la sesión actual y se revierte al cerrar la terminal.

Cambiar permisos y propietario de archivos: chmod y chown

En sistemas tipo Unix, cada archivo y directorio tiene asociados una serie de permisos y propietarios. Controlar esto desde Bash es clave para gestionar la seguridad y el acceso a recursos.

El comando encargado de modificar permisos es chmod (change mode). Permite ajustar qué puede hacer el propietario, el grupo y otros usuarios con un archivo: leer (r), escribir (w) o ejecutar (x). Por ejemplo:

chmod u+x script.sh

Con esta orden le das permiso de ejecución al usuario propietario. También puedes usar notación numérica, como chmod 755 archivo, que combina permisos para propietario, grupo y otros en un solo número.

Para cambiar el usuario dueño de un archivo está chown (change owner). Por ejemplo:

sudo chown nuevo_usuario archivo.txt

Esto establece que el propietario de archivo.txt pasa a ser nuevo_usuario. También se puede cambiar el grupo asociado y trabajar de forma recursiva sobre directorios completos cuando hace falta.

Redirecciones y pipes: conectando comandos

En Bash, casi todos los programas trabajan con tres flujos estándar: entrada estándar (stdin), salida estándar (stdout) y salida de error (stderr). Normalmente, stdin viene del teclado y stdout/stderr se muestran en la consola.

Sin embargo, la gracia de Bash está en que puedes redirigir esos flujos hacia archivos o hacia otros comandos. Así, en lugar de ver la salida en pantalla, puedes guardarla, encadenarla o filtrarla de mil formas distintas.

Para enviar la salida estándar de un comando a un archivo, sobrescribiéndolo, se usa el operador >. Por ejemplo:

echo "https://USER:TOKEN@github.com" > ~/.git-credentials

Con eso, el contenido generado por echo se escribe directamente en el archivo ~/.git-credentials, borrando lo que hubiera antes.

Si en lugar de sobrescribir quieres añadir contenido al final del archivo, se utiliza >>. Por ejemplo:

echo "IP_CONSOLA=192.168.0.200" >> kernel.config

Así se concatena una nueva línea al final de kernel.config, creando el archivo si no existía previamente.

Para conectar la salida de un comando con la entrada de otro se usa el pipe (|). Un ejemplo muy típico sería:

cat *.c | grep sleep

Aquí, cat *.c lee todos los archivos .c del directorio y manda su contenido a grep sleep, que filtra solo las líneas que contienen la palabra “sleep”. El resultado se muestra por pantalla, pero podrías encadenar más filtros o redirigir ese resultado final a un archivo.

Estos mecanismos de redirección permiten montar auténticos pipelines de procesamiento de datos, haciendo que varios programas pequeños colaboren entre sí para resolver tareas complejas de forma muy eficiente.

Variables de entorno y configuración de la sesión Bash

Las variables de entorno son valores que se almacenan en la sesión de la shell y que muchos programas usan para saber dónde están ciertos recursos o qué configuración aplicar. Ejemplos típicos son HOME, USER, PATH, etc.

Si ejecutas el comando env, verás un listado con todas las variables de entorno definidas actualmente, en la forma NOMBRE=valor. Por ejemplo, algo tipo:

HOME=/home/usuario
USER=usuario

Para ver el valor de una variable concreta, puedes usar echo precediendo el nombre con el símbolo del dólar. Por ejemplo:

echo $USER

Esto mostrará tu nombre de usuario. Esta sintaxis se usa tanto en la línea de comandos como dentro de scripts de Bash para leer variables.

Si quieres definir una variable de entorno en la sesión actual, se hace con export. Por ejemplo:

export MI_VARIABLE='aguante sistemas operativos'

Después de esto, si escribes echo $MI_VARIABLE, verás el texto que has asignado. Sin embargo, esta definición solo dura mientras existe la sesión actual (y sus futuras shells hijas). Si cierras la terminal y abres otra, la variable desaparecerá.

Para que una variable de entorno se cargue automáticamente en todas tus sesiones de Bash, lo habitual es añadir el export correspondiente al final del archivo ~/.bashrc. Por ejemplo:

export MI_VARIABLE='aguante sisop'

Un flujo típico para hacerlo sería:

  1. Ir a tu directorio personal con cd ~.
  2. Listar todos los archivos, incluyendo ocultos, con ls -a para comprobar que existe .bashrc.
  3. Ver su contenido con less .bashrc si quieres revisarlo antes.
  4. Abrirlo con nano .bashrc y añadir al final la línea export MI_VARIABLE='aguante sisop'.
  5. Guardar y cerrar con la combinación de teclas típica de nano.
  6. Cerrar la terminal y abrir una nueva para que se recargue el archivo de configuración.
  7. Comprobar con echo $MI_VARIABLE que la variable ya está disponible en la nueva sesión.

De esta manera puedes personalizar tu entorno, establecer rutas adicionales en el PATH, configurar proxies, alias de comandos y muchas otras cosas que hacen tu día a día en Bash mucho más cómodo.

Una vez manejas qué es Bash, cómo escribir scripts, los comandos de navegación y manipulación de archivos, el uso de herramientas como man, htop, nano, lsof, las redirecciones, los pipes y las variables de entorno, tienes la base necesaria para trabajar con soltura en la línea de comandos de Linux y macOS, automatizar tareas y entender mejor lo que ocurre “por debajo del capó” en tu sistema.