Notas conceptuales: ¿Qué es la Terminal, la Línea de Comandos (CLI) y el Shell?
Publicado el: 11/17/2025
¿Qué es la Terminal, la Línea de Comandos (CLI) y el Shell?
Mucha gente usa los términos "terminal", "línea de comandos" y "shell" como si fueran lo mismo, pero no lo son. Entender la diferencia es clave para saber qué estás haciendo realmente.
Vamos a aclararlo con una analogía simple:
- La Terminal es la aplicación que abres. Es la "ventana" (como el Terminal de Windows, iTerm2 en Mac, o GNOME Terminal en Linux).
- El Shell es el programa que corre dentro de la terminal. Es el "cerebro" que interpreta tus comandos (ej:
bash,zsh,fish). - La Línea de Comandos (CLI) es el método de interactuar. Es la interfaz (la pantalla negra con un cursor) donde escribes texto. Es lo opuesto a una GUI (Interfaz Gráfica de Usuario) donde usas un mouse.
En resumen: Abres la Terminal para usar un Shell a través de su Línea de Comandos.
El Shell: El Intérprete de Comandos
Cuando escribes un comando, la terminal no lo entiende. Simplemente pasa ese texto al Shell. El Shell es el programa que lee el comando, lo interpreta y le dice al sistema operativo (Linux, macOS, etc.) qué hacer.
Bash (Bourne Again SHell)
La terminal que vinia por defecto en la mayoría de sistemas Linux y macOS durante décadas. Es el estándar de la industria.
Comandos Básicos de Bash
Aquí tienes los comandos esenciales para moverte.
pwd(Print Working Directory): Imprime el directorio (carpeta) actual donde estás trabajando.cd(Change Directory): Te permite cambiar de directorio.cd nombre_carpeta(Entra a una carpeta)cd ..(Sube un nivel, al directorio padre)cd ~o solocd(Te lleva a tu directorio "Home" o principal)
ls(List): Lista el contenido de la carpeta de trabajo actual.ls -a(Muestra todos los archivos, incluyendo los ocultos como.env).ls -l(Muestra la "lista larga", con permisos, dueño, tamaño y fecha).
catvsless: Para ver el contenido de un archivo.cat archivo.txt: Imprime todo el contenido del archivo en la terminal. Es rápido, pero inútil si el archivo es muy largo.less archivo.txt: Es un "paginador". Te permite ver el contenido de archivos grandes de forma interactiva (puedes subir, bajar y buscar). Es mucho más útil.
mkdir(Make Directory): Permite crear carpetas (ej:mkdir nuevaCarpeta).touch: Crea un archivo nuevo y vacío (ej:touch readme.md).mv(Move): Te permite mover un archivo O renombrarlo.mv archivo.txt /otra/carpeta/(Mover)mv archivo_viejo.txt archivo_nuevo.txt(Renombrar)
cp(Copy): Copia un archivo o directorio. A diferencia demv, no elimina el original.cp archivo.txt /otra/carpeta/cp -r mi_directorio /otra/carpeta/(Para copiar un directorio, necesitas el argumento-rde "recursivo").
rm(Remove): Elimina un archivo.rm -r mi_directorio/(Elimina una carpeta y todo lo que tiene dentro).- ¡ADVERTENCIA!
rmno tiene "papelera de reciclaje". Una vez que lo usas, la información se pierde. Ten mucho cuidado, especialmente conrm -rf(-ffuerza la eliminación sin preguntar), ya que es un comando muy destructivo.
echo: Toma un argumento de texto (string) y lo imprime en la terminal. Es muy útil para crear o añadir texto a archivos.echo "Hola" > readme.md(Crea o sobrescribe el archivo).echo "Adios" >> readme.md(Usa>>para agregar al final del archivo).
man(Manual): Muestra el manual de cualquier comando.man ls(Te mostrará todas las opciones posibles parals).
¿Qué son las Opciones y Argumentos?
Puedes pasarle argumentos (parámetros) u opciones (flags) a un comando para afectar la manera en la que actúa.
2 Guiones (Forma Larga o "Human-Readable")
Son fáciles de entender. Por ejemplo, ls --all es lo mismo que ls -a.
1 Guion (Forma Corta o "POSIX")
Usan una sola letra. La gran ventaja es que permite "encadenar" múltiples argumentos.
En lugar de escribir:
ls --all --human-readable --size
Puedes agruparlos de la siguiente manera:
ls -ahs
Control de Procesos
Ctrl+C(Interrumpir): "Mata" o detiene el proceso que se está ejecutando en primer plano (ej: un script).Ctrl+Z(Suspender): "congela" el proceso actual y lo envía al background (segundo plano). Puedes ver los procesos suspendidos conjobsy traerlos de vuelta confg(foreground).