Notas conceptuales: ¿Qué es la Terminal, la Línea de Comandos (CLI) y el Shell?

terminalbashlinuxprincipiantesprogramacion

¿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 solo cd (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).
  • cat vs less: 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 de mv, no elimina el original.
    • cp archivo.txt /otra/carpeta/
    • cp -r mi_directorio /otra/carpeta/ (Para copiar un directorio, necesitas el argumento -r de "recursivo").
  • rm (Remove): Elimina un archivo.
    • rm -r mi_directorio/ (Elimina una carpeta y todo lo que tiene dentro).
    • ¡ADVERTENCIA! rm no tiene "papelera de reciclaje". Una vez que lo usas, la información se pierde. Ten mucho cuidado, especialmente con rm -rf (-f fuerza 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 para ls).

¿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 con jobs y traerlos de vuelta con fg (foreground).