Skip to content
Objetivos
Chuleta de los comandos que usaremos en clase
  • Moverte en un terminal, por el sistema de archivos sin perderte (saber dónde estamos, y como movernos a otra ubicación)
  • Crear, copiar, ver y buscar ficheros
  • Permisos justos, pe. /var/www (importante asignarlo al recurso (carpeta/s-directorio/s que queremos, cuidado con no hacerlo en otro recurso)
  • Entender qué hace apt update / apt install cuando falta un comando
  • Estos comandos los usaremos y reapareceran con Docker, Apache, se intentará referenciar aquí. En despliegue los estudiaréis con detalle.
Información adicional

Guía de consulta, no un tema de Linux.

Cada ficha trae comando, origen (letras marcadas), una frase, un ejemplo y solo las opciones que vamos a usar. También se aportarán ejemplos

Es un documento de lectura fácil

command not found

Es posible que a veces Ubuntu, nos responda esto,

En este caso habrá que instalarlo para poderlo utilizar

También puede ser que no esté en el PATH y haya que incluirlo (veremos cómo hacerlo)

Rutas que vas a repetir ​

Dónde estás
  • / raíz del sistema
  • ~ tu home (/home/tu-usuario)
  • . directorio actual
  • .. directorio padre

Gestión de Paquetes o programas ​

Gestión de paquetes o programas ​

Actualiza la información de lo que hay en los repositorios (nombres y versiones). No instala programas.

Ubuntu no descarga programas al azar. Instala paquetes que saca de repositorios: almacenes de software ya preparado para esta distribución.

Repositorio de paquetes

Una fuente configurada en el sistema de la que apt puede instalar, actualizar o consultar software. Los repositorios oficiales de Ubuntu son los que trae de serie (lo habitual en clase).

Se pueden añadir repositorios de otros proveedores de software

La lista de repositorios no es mágica: está en ficheros de configuración.

  • Clásico: /etc/apt/sources.list
  • Ubuntu actual: sobre todo /etc/apt/sources.list.d/ (a veces un ubuntu.sources)

No hace falta editarlos a mano ahora. Sí hace falta distinguir dos comandos que se copian juntos y no hacen lo mismo:

Actualiza la información de lo que hay en los repositorios (nombres y versiones). No instala programas.

Instala un paquete usando ese catálogo. Si el catálogo está viejo, puede que no vea la versión actual: por eso suele ir después de update.

bash
sudo apt update
sudo apt install tree

Repositorios externos

A veces el software que necesitamos no está (o no en la versión que queremos) en los repositorios configurados por defecto. Entonces se añade un repositorio externo.

En este módulo aparecerá con calma, por ejemplo al instalar ciertas versiones de PHP o al preparar Docker. De momento basta con saber que existe: apt solo instala lo que sus repositorios conocen.

Imprime el directorio de trabajo: dónde estás.

Cambia de directorio.

  • cd .. sube al padre
  • cd ~ o cd → home
  • cd - vuelve al anterior
  • cd / va a la raíz

Lista el contenido del directorio.

  • -l detalle (permisos, dueño, tamaño)
  • -a incluye ocultos (.env, .git)
  • -h tamaños legibles (2.4K en vez de bytes)

Muestra el directorio en árbol. Muy útil para ver sites-available / sites-enabled.

  • -L n profundidad máxima

Crear, copiar, mover, borrar ​

Crea un directorio.

  • -p crea también los padres si no existen (no falla si ya está)

Crea un fichero vacío. Si ya existe, solo le actualiza la fecha.

Copia ficheros. El original se queda.

  • -r recursivo (obligatorio para directorios)

Mueve o renombra. No hay comando rename (mv sería su equivalente).

Borra. No hay papelera.

  • -r borra directorios
  • -i pregunta antes
  • -rf fuerza y recursivo: no lo uses en / ni “por si acaso”

Crea un enlace. Con -s es simbólico (un atajo a otra ruta). Por ejemplo, a2ensite internamente hace esto entre sites-available y sites-enabled.

  • -s simbólico (el que usamos)

rm -rf

Cuidado al utilizar este comando. borramos lo especificado de forma recursiva y sin preguntar.

Ver y editar ​

Vuelca el fichero entero en la terminal. Para ficheros cortos.

Paginador: lees un fichero largo sin abrirlo en un editor.

  • q salir
  • /texto buscar
  • flechas / espacio para moverte

Primeras líneas.

  • -n cuántas líneas (por defecto 10)

Últimas líneas. Imprescindible con logs.

  • -n cuántas líneas
  • -f follow: se queda mirando lo nuevo (Ctrl+C para salir)

Editor sencillo en terminal. Ctrl+O guardar, Ctrl+X salir. Con sudo nano editas ficheros de sistema (/etc/hosts, virtual hosts).

Búsqueda ​

Busca texto **dentro** de ficheros. - `-i` ignora mayúsculas - `-n` número de línea - `-r` / `-R` recursivo en carpetas - `-l` solo el **nombre del fichero** que contiene la coincidencia

Busca ficheros por nombre, tipo o ruta (no el contenido).

  • -name '*.php' patrón (las comillas evitan que la shell expanda el *)
  • -type d solo directorios · -type f solo ficheros

Ruta del ejecutable que se lanzaría. Sirve para comprobar que existen php, docker o composer.

Permisos y usuarios ​

En Linux todo proceso corre asociado a un usuario. En este nivel: el que lo ha lanzado. Más adelante veremos servicios que cambian de usuario o arrancan con uno concreto.

Cuando ese proceso toca un fichero o directorio, el sistema no pregunta “¿quién soy yo en la terminal?”: mira el usuario/grupo del proceso y los permisos del recurso.

El modelo

proceso → usuario/grupo → recurso → permisos → operación permitida o denegada

Tres permisos:

En un ficheroEn un directorio
r readleer el contenidolistar (ls)
w writemodificarlocrear, borrar o renombrar entradas
x executeejecutarloentrar (cd)

En un directorio, r y w casi siempre van con x: sin x no entras, y entonces no puedes listar ni crear nada útil.

En este módulo, Apache/PHP suele ejecutarse como www-data. Si PHP no puede leer o escribir, el que choca con los permisos es ese proceso, no tu usuario de clase. Detalle y tabla octal → PhpStorm y permisos.

Ejecuta el comando como administrador. Lo pide el sistema cuando tocas /etc, paquetes o servicios.

Qué usuario eres en esta terminal. Dentro de un contenedor a menudo es root; en tu Ubuntu, tu cuenta.

Cambia permisos (qué se puede leer, escribir o ejecutar).

  • -R recursivo
  • +x dar ejecución (scripts)
  • 644 fichero típico · 755 directorio / script

Cambia propietario y grupo. Formato usuario:grupo.

  • -R recursivo
  • El grupo www-data es el de Apache

No uses chmod 777 “para que vaya”

Abre el fichero a todo el mundo. En clase se ve al momento; en un servidor es un agujero. Ajusta dueño (chown) y un 755/644.

Procesos y servicios ​

Lista procesos. aux es el retrato amplio (usuario, CPU, comando).

Vista en vivo de CPU y memoria. q para salir. Si un contenedor se come la RAM, empieza aquí.

Pide a un proceso (por PID, columna de ps/top) que termine.

  • -9 forzar (SIGKILL): último recurso, no el primer intento

Controla servicios (Apache, MySQL, Docker…). Es el comando nativo en Ubuntu.

  • status · start · stop · restart · reload
  • reload recarga config sin tumbar del todo (Apache, después de un virtual host)
  • Atajo equivalente: sudo service apache2 restart (en Debian/Ubuntu acaba llamando a systemctl)

Red ​

¿Hay red hasta esa máquina? También comprueba que un nombre de /etc/hosts resuelve.

  • -c 4 solo 4 paquetes (si no, no para hasta Ctrl+C)

Habla HTTP desde la terminal: tu PHP, Laravel o el contenedor.

  • -I solo cabeceras (¿responde 200, 301, 500?)
  • -L sigue redirecciones

Puertos a la escucha. Busca :80, :8800, :3306, :443.

  • -t TCP · -u UDP · -l listening · -n números, sin resolver nombres

Direcciones de tus interfaces.

  • a (address) todas
  • -br formato corto, el que se puede leer en clase

Disco ​

Espacio de las particiones (el disco visto por el sistema).

  • -h tamaños humanos (G, M)

Peso de una carpeta (vendor, node_modules, logs…).

  • -s solo el total · -h legible
  • du -sh * totales de cada entrada del directorio actual

Empaquetar: tar ​

Empaqueta (y casi siempre comprime) un directorio. Lo contrario: descomprimir.

  • -c crear · -x extraer · -f fichero
  • -z gzip (por eso ves .tar.gz)
  • Extraer: tar -xzf proyecto.tar.gz

Atajos de terminal ​

No son comandos de paquete, pero ahorran más tiempo que media chuleta.

QuéPara qué
TabAutocompleta rutas y comandos
↑ / ↓Recorre el historial
Ctrl+CCorta el proceso en primer plano (ping, tail -f, top)
Ctrl+L o clearLimpia la pantalla
Ctrl+DFin de entrada / salir de algunas shells

Lista los comandos que ya has usado. !210 repite el número 210 (con cuidado).

Manual del comando. q sale. Versión rápida: ls --help.

Imprime texto o el valor de una variable. En Docker y Laravel verás mucho $VAR y ficheros .env.

SímboloQué haceEjemplo
|Tubería: la salida de uno entra en el siguienteps aux | grep apache
>Escribe / sobrescribe un ficheroecho hola > nota.txt
>>Añade al finalecho otra >> nota.txt
&&Encadena si lo anterior fue bienmkdir app && cd app

Con Docker ​

Estos comandos no vienen con Ubuntu: hace falta el motor de Docker (unidad Docker). La idea clave: docker exec … bash te deja dentro de un Linux; a partir de ahí valen ls, cd, chmod, tail…

Abre una shell en un contenedor que ya está en marcha. -it es interactivo + terminal. web es el container_name de clase.

Estado de los servicios del compose (¿está up el web?).

Logs del compose. -f es el tail -f de Docker.

Levanta el laboratorio. -d en segundo plano (detached). Para tumbarlo: docker compose down.

Apache (los de la práctica) ​

Van con el paquete apache2. Tras cambiar un virtual host: sudo systemctl reload apache2.

Activa un virtual host: crea el enlace en sites-enabled. El contrario es a2dissite.

configtest revisa la configuración antes del reload. Si dice Syntax OK, recarga; si no, no tumbes Apache a ciegas.

Referencias

Dónde sigue esto

Apache ​

En este módulo vas a vivir aquí:

  • /var/www/html — código que sirve Apache (en Docker, el volumen del proyecto)
  • /etc/apache2 — configuración de Apache
  • /etc/hosts — nombres locales (www.informatica.com → 127.0.0.1)
  • /var/log/apache2 — logs del servidor web
© 2026 · DAWS · Desarrollo Web en Entorno Servidor