Skip to content

Tema 5: El Shell de Linux

1. Resumen Ejecutivo

Esta sesión introduce el manejo del sistema operativo Linux a través de su intérprete de comandos (Shell/Terminal). Se cubren desde los comandos básicos de navegación y gestión de archivos hasta la administración de permisos y procesos. Además, se establece la base para la creación de scripts, enfatizando la importancia de entender la sintaxis y los permisos para la seguridad del sistema.


2. Conceptos Clave (Glosario Rápido)

Estas definiciones fueron repasadas mediante una dinámica de "Pasapalabra" en clase y son esenciales para el examen:

  • Alias: Comando que permite crear un atajo para otro comando o conjunto de comandos.
  • Bash: Intérprete de comandos estándar en la mayoría de sistemas UNIX/Linux.
  • Chmod: Comando para cambiar permisos de acceso (lectura, escritura, ejecución).
  • df (Disk Free): Muestra el uso del espacio en disco.
  • Echo: Imprime texto o variables en la salida estándar.
  • Grep: Busca patrones (texto) dentro de archivos.
  • Kill: Envía señales a procesos (usualmente para detenerlos).
  • Man: Muestra el manual de un comando.
  • Sudo: Ejecuta comandos con privilegios de superusuario (root).

3. Desarrollo del Temario

3.1. El Intérprete de Comandos (Shell)

El Shell es la interfaz que nos permite interactuar con el núcleo (kernel) del sistema operativo. * Acceso: En entornos gráficos como Ubuntu, se accede buscando "Terminal". * Entorno de Prácticas: El profesor recomienda usar WSL (Windows Subsystem for Linux) por rapidez, aunque una Máquina Virtual (VirtualBox) o un terminal online también son válidos.

Atajos de Teclado (Shortcuts)

El uso eficiente del terminal depende de conocer las combinaciones de teclas para la edición y el movimiento del cursor:

Comando Función
TAB Autocompletar nombres de archivos o comandos (mencionado en clase como fundamental).
CTRL + L Limpia la pantalla (equivalente al comando clear).
CTRL + A / Inicio Mueve el cursor al principio de la línea.
CTRL + E / Fin Mueve el cursor al final de la línea.
CTRL + U Corta desde el cursor hasta el principio de la línea.
CTRL + K Corta desde el cursor hasta el final de la línea.
CTRL + C Interrumpe/Cancela el proceso actual.

3.2. Comandos Básicos de Navegación e Información

Estos comandos son "de supervivencia" para moverse por el sistema de archivos.

  • pwd (Print Working Directory): Muestra la ruta absoluta del directorio donde estás trabajando actualmente.
  • cd (Change Directory): Cambia el directorio actual.
    • cd /: Ir al directorio raíz (root).
    • cd ..: Subir un nivel en la jerarquía.
    • cd nombre_carpeta: Entrar en una carpeta (ruta relativa).
  • clear: Limpia la pantalla del terminal para trabajar con orden.
  • whereis: Localiza la ubicación de los archivos binarios, fuentes y manuales de un comando.
    • Ejemplo: whereis ls muestra dónde está instalado el ejecutable ls.
  • man (Manual): Muestra la documentación oficial de un comando. Es vital para consultar opciones (flags).
    • Uso: man ls (Presionar q para salir).

3.3. Listado de Archivos (ls)

El comando ls muestra el contenido de un directorio. Es fundamental dominar sus "flags" (opciones):

  • ls: Listado simple.
  • ls -l: Listado en formato largo (long). Muestra permisos, propietario, tamaño y fecha.
  • ls -a: Muestra archivos ocultos (aquellos que empiezan por punto, ej: .bashrc).
  • ls -la: Combinación muy usada para ver todo con detalle.

3.4. Permisos de Archivos y Directorios

¡OJO AL DATO! Este es el punto más crítico para examen y práctica profesional. Linux es un sistema multiusuario y gestiona la seguridad mediante permisos.

Al ejecutar ls -l, vemos una cadena como drwxr-xr-x. Esta cadena se desglosa así:

  1. Primer carácter:
    • -: Es un archivo.
    • d: Es un directorio.
  2. Siguientes 9 caracteres: Se dividen en 3 grupos de 3 letras.
Grupo Usuario Afectado Descripción
1º (Izquierda) Propietario (User) Dueño del archivo.
2º (Centro) Grupo (Group) Usuarios que pertenecen al grupo del archivo.
3º (Derecha) Otros (Others) Resto de usuarios del sistema.

Significado de las letras y Valores Numéricos

Para cambiar permisos con chmod, usamos valores octales (binarios) explicados en la transcripción:

  • r (Read/Lectura): Valor 4.
  • w (Write/Escritura): Valor 2.
  • x (Execute/Ejecución): Valor 1.

Fórmula de Permisos: $\(Permiso Total = r + w + x\)$ * Lectura y Escritura: \(4 + 2 = 6\) * Lectura y Ejecución: \(4 + 1 = 5\) * Lectura, Escritura y Ejecución: \(4 + 2 + 1 = 7\)

Ejemplo Práctico de Clase: Si queremos que el propietario tenga todo (7), y el grupo/otros solo lectura (4): Comando: chmod 744 nombre_archivo


3.5. Gestión de Archivos y Directorios

  • mkdir: Crea un nuevo directorio (Make Directory).
  • rmdir: Borra un directorio (solo si está vacío).
  • rm: Elimina archivos.
    • Nota: Para borrar carpetas con contenido se usa rm -r.
  • cat: Muestra el contenido de un archivo en pantalla. También sirve para crear o fusionar archivos.
  • Redirecciones (>, >>):
    • >: Guarda la salida de un comando en un archivo (sobrescribe).
    • >>: Añade la salida al final del archivo sin borrar lo anterior.

3.6. Gestión de Procesos

  • ps: Muestra una "foto" de los procesos actuales.
    • ps -ef: Muestra todos los procesos detallados.
  • kill: Envía una señal para terminar un proceso usando su PID (Process ID).
    • kill -9 PID: (Importante) Fuerza el cierre inmediato del proceso "sin preguntar". Es una terminación abrupta (mencionado en transcripción como "matar sin preguntar").

3.7. Sudo y Gestión de Paquetes

  • sudo: Permite ejecutar comandos con privilegios de administrador (root). Requiere contraseña.
  • Gestión de Paquetes (APT en Debian/Ubuntu):
    • sudo apt-get install programa: Instala software.
    • sudo apt-get update: Actualiza la lista de repositorios.
    • sudo apt-get upgrade: Actualiza los programas instalados.

3.8. Resolución de Problemas: Tuberías (Pipes)

Se explicó cómo encadenar comandos usando la tubería | para realizar tareas complejas.

Ejemplo 1: Ver los 5 procesos que más CPU consumen ps -e -o pid,cmd,%cpu --sort=-%cpu | head -n 6 Explicación: Listamos procesos (ps), elegimos columnas (-o), ordenamos por CPU descendente (--sort), y "pasamos" el resultado a head para ver solo los primeros.

Ejemplo 2: Buscar archivos grandes (>100MB) find / -type f -size +100M Explicación: Busca desde la raíz (/), tipo archivo (-type f), con tamaño mayor a 100MB.


4. Preguntas de Autoevaluación

  1. ¿Qué comando y "flag" utilizarías para listar todos los archivos de un directorio, incluidos los ocultos, mostrando sus permisos y propietario?
  2. Si ejecutas chmod 751 script.sh, ¿qué permisos numéricos y simbólicos (rwx) estás asignando al propietario, al grupo y a otros?
  3. ¿Cuál es la diferencia crítica entre ejecutar kill PID y kill -9 PID según lo explicado en clase?
  4. ¿Para qué sirve el comando sudo y qué archivo de configuración define quién puede usarlo?
  5. ¿Qué comando usarías para saber la ruta absoluta del directorio en el que te encuentras?