Terminal de Linux: qué es, cómo funciona y por qué importa
· 13 min de lectura
Aprende a usar la terminal de Linux desde cero: qué es una shell, cómo navegar por carpetas, gestionar archivos, usar redirección y pipes, y dominar los atajos que te harán más eficiente en cualquier laboratorio de ciberseguridad.
Si alguna vez has visto a alguien trabajar en ciberseguridad, habrás notado que casi todo pasa en una ventana negra llena de texto. Esa ventana es la terminal, y ese texto son comandos. Puede parecer intimidante al principio, pero la terminal es simplemente una forma de hablar con tu ordenador usando palabras en lugar de clics. Piensa en ella como un chat donde tú escribes instrucciones y el sistema responde.
La terminal es la herramienta más importante que vas a aprender. Mientras que un entorno gráfico te limita a los botones que alguien diseñó, la terminal te da acceso directo a todo lo que el sistema puede hacer: mover archivos, buscar texto, monitorizar procesos, conectarte a otros equipos y automatizar tareas repetitivas. En los laboratorios de whoami-labs, el noventa por ciento del trabajo se hace desde la terminal.
En esta lección vas a aprender qué es una shell, cómo moverte por las carpetas del sistema, cómo crear, copiar y borrar archivos, cómo redirigir la salida de los comandos y cómo encadenarlos con pipes. Al terminar, tendrás la soltura básica para trabajar en cualquier máquina Linux.
Todo lo que practiques, hazlo en tu propio equipo, en una máquina virtual o en los laboratorios de whoami-labs. La terminal da acceso directo al sistema, y un comando equivocado puede borrar archivos importantes.
Qué es la terminal#
Cuando abres una terminal, en realidad estás abriendo dos cosas a la vez: un emulador de terminal (la ventana gráfica) y una shell (el programa que interpreta tus comandos). El emulador es solo la pantalla; la shell es el cerebro.
Imagina un restaurante: la terminal es la mesa donde te sientas, y la shell es el camarero que escucha tu pedido, lo lleva a la cocina (el kernel del sistema operativo) y te trae el resultado. Puedes cambiar de camarero (de shell) sin cambiar de restaurante, y el funcionamiento será ligeramente distinto.

La shell más común en Linux es Bash (Bourne Again Shell), que viene instalada por defecto en casi todas las distribuciones. Otra shell popular es Zsh, que ofrece autocompletado más avanzado y es la predeterminada en macOS. Ambas entienden los mismos comandos básicos; las diferencias están en funciones avanzadas como temas, plugins y la forma de escribir scripts.
Cuando la terminal está lista, verás el prompt: una línea que termina en $ para usuarios normales o en # para root. El prompt te dice quién eres, en qué máquina estás y en qué carpeta te encuentras:
ana@laboratorio:~$
Esto significa: soy ana, estoy en la máquina laboratorio y mi directorio actual es ~ (mi carpeta personal).
Por qué es importante#
La interfaz gráfica es cómoda para tareas cotidianas, pero la terminal es insustituible cuando necesitas velocidad, precisión y control total. Estas son las razones principales por las que la terminal importa en ciberseguridad:
- Los servidores no tienen interfaz gráfica. La mayoría de los servidores Linux que encontrarás en un entorno profesional o en un laboratorio solo ofrecen acceso por terminal. Si no sabes usarla, no puedes trabajar.
- Los comandos son repetibles. Un clic en un menú no se puede documentar ni automatizar fácilmente. Un comando sí: lo copias, lo pegas en un script y lo ejecutas cien veces.
- Las herramientas de seguridad son de terminal. Nmap, Gobuster, Netcat, Hydra, John the Ripper: todas se usan escribiendo comandos. Sin terminal no hay pentesting.
- La automatización empieza aquí. Un script de Bash puede hacer en segundos lo que a mano lleva minutos. Eso marca la diferencia en una auditoría real.
Conceptos clave#
Antes de escribir tu primer comando, conviene tener claros algunos términos que aparecen todo el tiempo:
| Concepto | Qué es | Ejemplo |
|---|---|---|
| Terminal (emulador) | La ventana gráfica donde escribes | GNOME Terminal, Konsole, Windows Terminal |
| Shell | El programa que interpreta los comandos | Bash, Zsh, Fish, Sh |
| Prompt | La línea que espera tu entrada | ana@lab:~$ |
| Comando | Una instrucción que la shell ejecuta | ls, cd, cat |
| Argumento | Dato que le pasas al comando | ls /etc (la ruta es el argumento) |
| Opción o flag | Modificador del comportamiento del comando | ls -l (muestra detalles) |
| Directorio de trabajo | La carpeta donde estás ahora mismo | Se ve con pwd |
| Ruta absoluta | Camino completo desde la raíz | /home/ana/documentos |
| Ruta relativa | Camino desde donde estás ahora | documentos/informe.txt |
Cómo funciona#
Cada vez que escribes un comando y pulsas Enter, la shell sigue estos pasos:
- Lee lo que escribiste y lo divide en partes: el nombre del comando, las opciones y los argumentos.
- Busca el programa correspondiente. Los comandos no son palabras mágicas: son programas guardados en carpetas como
/bino/usr/bin. Puedes ver dónde está un comando conwhich ls. - Ejecuta el programa y le pasa los argumentos.
- El programa hace su trabajo (leer un archivo, listar una carpeta) y devuelve su resultado por la salida estándar (stdout), que normalmente es tu pantalla.
- Si algo sale mal, el mensaje de error va por la salida de error (stderr), que también aparece en pantalla pero es un canal separado.
Este flujo es fundamental porque, como verás más adelante, puedes redirigir la salida estándar a un archivo y los errores a otro, o encadenar la salida de un comando con la entrada de otro.
Uso práctico paso a paso#
Paso 1: navegar por el sistema de archivos#
Los tres comandos más básicos de navegación son pwd, ls y cd:
pwd
/home/ana
pwd (print working directory) te dice dónde estás. Es tu brújula.
ls
Documentos Descargas proyectos notas.txt
ls lista el contenido de la carpeta actual. Con opciones puedes ver más detalles:
ls -la
La opción -l muestra permisos, propietario, tamaño y fecha. La opción -a incluye los archivos ocultos (los que empiezan por punto, como .bashrc).
cd /etc
pwd
/etc
cd (change directory) te mueve a otra carpeta. Algunos atajos imprescindibles:
cd ~ # ir a tu carpeta personal
cd .. # subir un nivel
cd - # volver al directorio anterior
cd / # ir a la raíz del sistema
Paso 2: gestionar archivos y carpetas#
Para crear, copiar, mover y borrar usas estos comandos:
mkdir proyectos # crear una carpeta
touch notas.txt # crear un archivo vacío
cp notas.txt copia-notas.txt # copiar un archivo
mv copia-notas.txt respaldo/ # mover a otra carpeta
rm archivo-viejo.txt # borrar un archivo
rm -r carpeta-vieja/ # borrar una carpeta y su contenido
Para leer el contenido de un archivo tienes varias opciones según lo que necesites:
cat /etc/hostname # muestra todo el contenido de golpe
head -n 5 /var/log/syslog # muestra las 5 primeras líneas
tail -n 10 /var/log/auth.log # muestra las 10 últimas líneas
tail -f /var/log/syslog # sigue mostrando líneas nuevas en tiempo real
less /etc/passwd # abre el archivo para leerlo con scroll (q para salir)
Paso 3: wildcards (comodines)#
Los comodines te permiten referirte a varios archivos a la vez sin escribir cada nombre:
ls *.txt # todos los archivos que terminan en .txt
ls informe-?.pdf # informe-1.pdf, informe-A.pdf (? = un solo carácter)
cp *.log respaldo/ # copiar todos los .log a la carpeta respaldo
rm tmp_* # borrar todo lo que empieza por tmp_
El asterisco significa «cualquier secuencia de caracteres» y el signo de interrogación significa «exactamente un carácter». Son herramientas muy útiles cuando trabajas con muchos archivos.
Paso 4: redirección de entrada y salida#
Aquí es donde la terminal empieza a mostrar su verdadero poder. Puedes enviar la salida de un comando a un archivo en lugar de que aparezca en pantalla:
ls /etc > listado.txt # guarda la salida en un archivo (lo sobrescribe)
echo "nueva línea" >> notas.txt # añade al final sin sobrescribir
También puedes redirigir los errores por separado:
find / -name "*.conf" 2> /dev/null
Este comando busca archivos .conf en todo el sistema. Los errores de permiso (que serán muchos) se envían a /dev/null, que es el «agujero negro» de Linux: todo lo que va ahí desaparece. Así solo ves los resultados útiles.
find / -name "shadow" > encontrados.txt 2> errores.txt
Esto guarda los resultados en un archivo y los errores en otro. Es muy práctico para auditorías donde necesitas separar lo relevante del ruido.
Paso 5: pipes (tuberías)#
Los pipes son el superpoder de la terminal. Con el carácter | conectas la salida de un comando directamente a la entrada del siguiente, como tuberías que enlazan máquinas en una fábrica:
cat /etc/passwd | grep "bash"
Este comando muestra el contenido de /etc/passwd y lo pasa a grep, que filtra solo las líneas que contienen la palabra «bash». El resultado son los usuarios que tienen Bash como shell.
ls -la /etc | head -n 20
Lista el contenido de /etc con detalles pero muestra solo las primeras 20 líneas.
cat /var/log/auth.log | grep "Failed" | wc -l
Cuenta cuántos intentos de acceso fallidos hay en el log de autenticación. Tres comandos encadenados que juntos responden una pregunta de seguridad concreta.
Paso 6: historial, autocompletado y alias#
La terminal recuerda los comandos que has escrito. Puedes acceder a ellos de varias formas:
history # muestra todos los comandos anteriores
history | tail -20 # los últimos 20
Usa la flecha arriba del teclado para navegar por los comandos anteriores y la combinación Ctrl+R para buscar en el historial escribiendo parte del comando.
El autocompletado con Tab es otro ahorro de tiempo enorme. Escribe las primeras letras de un archivo o comando y pulsa Tab: la shell completa el nombre. Si hay varias opciones, pulsa Tab dos veces para ver todas.
Los alias son atajos que tú defines:
alias ll="ls -la"
alias puertos="ss -tulnp"
Ahora escribir ll equivale a ls -la. Para que los alias sean permanentes, añádelos a tu archivo ~/.bashrc.
Qué puedes hacer con esto#
| Tarea | Comando ejemplo |
|---|---|
| Ver en qué carpeta estás | pwd |
| Listar archivos ocultos con detalles | ls -la |
| Crear una estructura de carpetas | mkdir -p proyecto/src/tests |
| Buscar un texto en un archivo | grep "error" /var/log/syslog |
| Contar líneas de un archivo | wc -l archivo.txt |
| Ver quién ha intentado entrar al sistema | cat /var/log/auth.log seguido de grep |
| Encontrar archivos por nombre | find / -name "passwd" |
| Monitorizar un log en tiempo real | tail -f /var/log/syslog |
| Exportar resultados a un archivo | comando > resultados.txt |
Buenas prácticas#

- Lee antes de borrar. Antes de ejecutar
rm, asegúrate de que el archivo o carpeta es el correcto.rmno tiene papelera de reciclaje: lo que borras, desaparece. - Usa rutas absolutas en scripts. Cuando automatices algo, escribe la ruta completa (
/home/ana/proyecto/) en lugar de la relativa. Así el script funciona igual sin importar desde dónde lo ejecutes. - Crea alias para lo que repites. Si escribes un comando veinte veces al día, conviértelo en un alias. Ahorrar pulsaciones es ahorrar errores.
- Aprovecha el historial. Antes de escribir un comando largo, busca con
Ctrl+Rsi ya lo escribiste antes. El historial se guarda en~/.bash_history. - Usa Tab todo el tiempo. El autocompletado no es solo comodidad: también evita errores de escritura en nombres de archivos y rutas.
- Redirige los errores cuando estorben. En auditorías, los mensajes de «permiso denegado» llenan la pantalla. Mándalos a
/dev/nullcon2>para ver solo lo útil. - Comenta tus comandos complejos. Si encadenas varios pipes, añade un comentario con
#para que tu yo del futuro entienda qué hacías.
Errores comunes de principiante#
- Escribir
rm -rf /o borrar carpetas del sistema. Un error de ruta conrm -rpuede destruir tu sistema operativo entero. Siempre verifica dos veces antes de borrar recursivamente. - Olvidar que Linux distingue mayúsculas y minúsculas.
Notas.txtynotas.txtson archivos distintos.CDno es lo mismo quecd. - No leer los mensajes de error. Cuando un comando falla, la terminal te dice por qué. Léelo antes de buscar en internet. A menudo la respuesta está ahí: «permission denied», «no such file», «command not found».
- Confundir
>con>>. Un solo>sobrescribe el archivo. Si querías añadir contenido al final, necesitas>>. Perder un archivo de configuración por sobrescribirlo sin querer es más común de lo que parece. - No usar comillas en nombres con espacios. Si una carpeta se llama «mi proyecto», necesitas escribir
cd "mi proyecto"ocd mi\ proyecto. Sin comillas, la shell cree que son dos argumentos separados. - Ejecutar comandos como root sin necesidad. Usar
sudopara todo es peligroso. Si un comando no lo necesita, ejecútalo como usuario normal.
Preguntas frecuentes#
Bash y Zsh hacen lo mismo?#
Para los comandos básicos que vemos en esta lección, sí. Ambas entienden ls, cd, cat, pipes, redirección y todo lo demás. Las diferencias aparecen en funciones avanzadas: Zsh tiene mejor autocompletado, temas con Oh My Zsh y una sintaxis ligeramente distinta para algunos scripts. Si estás empezando, usa la que venga por defecto.
Puedo usar la terminal de Linux en Windows?#
Sí. Tienes varias opciones: WSL (Windows Subsystem for Linux) te da una terminal Linux real dentro de Windows. También puedes usar una máquina virtual con VirtualBox o VMware. Y para los laboratorios de whoami-labs, te conectas directamente a máquinas Linux por SSH.
Qué pasa si cierro la terminal con un comando en marcha?#
El proceso se detiene (recibe la señal SIGHUP). Si necesitas que un programa siga ejecutándose después de cerrar la terminal, usa nohup comando & o herramientas como tmux y screen, que crean sesiones persistentes.
Cómo sé qué opciones tiene un comando?#
Usa man seguido del nombre del comando para abrir su manual completo:
man ls
Si quieres algo más rápido, muchos comandos aceptan --help:
ls --help
Es verdad que todo en Linux se puede hacer desde la terminal?#
Prácticamente sí. Cada acción que haces con el ratón en una interfaz gráfica es un comando por debajo. La terminal te da acceso a todos esos comandos y a muchos más que no tienen equivalente gráfico. Por eso los administradores de sistemas y los profesionales de seguridad la prefieren.
El historial de comandos es un riesgo de seguridad?#
Puede serlo. El archivo ~/.bash_history guarda todo lo que has escrito, incluyendo contraseñas si las has puesto en un comando (por ejemplo, mysql -u root -pMiClave123). En una auditoría, revisar el historial del usuario es uno de los primeros pasos. Evita escribir contraseñas directamente en los comandos.
Resumen#
- La terminal es una ventana que ejecuta una shell (como Bash o Zsh), que interpreta tus comandos y los envía al sistema operativo.
- Con
pwd,lsycdte mueves por el sistema de archivos. Concat,head,tailylesslees archivos. cp,mv,rm,mkdirytouchte permiten gestionar archivos y carpetas.- La redirección (
>,>>,2>) envía la salida a archivos en lugar de a la pantalla. - Los pipes (
|) encadenan comandos: la salida de uno se convierte en la entrada del siguiente. - El autocompletado (Tab), el historial (flecha arriba,
Ctrl+R) y los alias hacen que trabajar en la terminal sea rápido y cómodo. - Dominar la terminal es el primer paso obligatorio para cualquier trabajo en ciberseguridad, administración de sistemas o desarrollo.