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.
Informacion 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 ​

apt

advanced package tool · gestión de paquetes

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

sudo apt update

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:

apt update

advanced package tool · actualizar catálogo

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

sudo apt update

apt install

advanced package tool · instalar

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.

sudo apt install tree

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.

pwd

print working directory

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

pwd

cd

change directory

Cambia de directorio.

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

cd /var/www/html

ls

list

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)

ls -la /var/www/html

tree

tree (árbol)

Hay que instalarlo: sudo apt install tree

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

  • -L n profundidad máxima

tree -L 2 /etc/apache2

Crear, copiar, mover, borrar ​

mkdir

make directory

Crea un directorio.

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

mkdir -p app/public

touch

touch

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

touch index.php

cp

copy

Copia ficheros. El original se queda.

  • -r recursivo (obligatorio para directorios)

sudo cp 000-default.conf informatica.conf

mv

move

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

mv prueba.php app/public/

rm

remove

Borra. No hay papelera.

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

rm -i cache.tmp

ln

link

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)

ln -s /var/www/html html

rm -rf

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

Ver y editar ​

cat

catenate (concatenar)

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

cat /etc/hosts

less

less is more

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

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

less /var/log/apache2/error.log

head

head (cabeza)

Primeras líneas.

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

head -n 20 index.php

tail

tail (cola)

Últimas líneas. Imprescindible con logs.

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

tail -f /var/log/apache2/error.log

nano

nano

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

nano .env

Búsqueda ​

grep

global regular expression print

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

grep -Rl 'mysqli' /var/www/html

find

find

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

find /var/www/html -name '*.php'

which

which

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

which php

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.

sudo

superuser do

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

sudo nano /etc/hosts

whoami

who am i

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

whoami

chmod

change mode

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

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

chmod 755 public

chown

change owner

Cambia propietario y grupo. Formato usuario:grupo.

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

sudo chown -R $USER:www-data /var/www/html

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 ​

ps

process status

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

ps aux | grep apache

top

top (los de arriba)

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

top

kill

kill

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

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

kill 1234

systemctl

systemd control

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)

sudo systemctl restart apache2

Red ​

ping

ping

¿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)

ping -c 4 127.0.0.1

curl

client URL

Hay que instalarlo: sudo apt install curl

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

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

curl -I http://localhost:8800

ss

socket statistics

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

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

ss -tuln

ip

IP

Direcciones de tus interfaces.

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

ip -br a

Disco ​

df

disk filesystem

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

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

df -h

du

disk usage

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

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

du -sh /var/www/html

Empaquetar: tar ​

tar

tape archive

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

tar -czf proyecto.tar.gz app/

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
history

history

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

history | tail

man

manual

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

man ls

echo

echo

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

echo $USER

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…

docker exec

execute (ejecutar dentro)

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

docker exec -it web bash

docker compose ps

compose · process status

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

docker compose ps

docker compose logs

compose · logs

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

docker compose logs -f

docker compose up

compose · up / down

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

docker compose up -d

Apache (los de la práctica) ​

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

a2ensite

apache2 enable site

Va con Apache (sudo apt install apache2).

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

sudo a2ensite informatica.conf

apache2ctl

apache2 control

Va con Apache (sudo apt install apache2).

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

sudo apache2ctl configtest

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

👁 Visitas: 529