aptadvanced package tool · gestión de paquetes
sudo apt update
/var/www (importante asignarlo al recurso (carpeta/s-directorio/s que queremos, cuidado con no hacerlo en otro recurso)apt update / apt install cuando falta un comandoGuí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)
/ raíz del sistema~ tu home (/home/tu-usuario). directorio actual.. directorio padreapt→advanced package tool · gestión de paquetes
$sudo apt update
Ubuntu no descarga programas al azar. Instala paquetes que saca de repositorios: almacenes de software ya preparado para esta distribución.
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.
/etc/apt/sources.list/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
sudo apt update
sudo apt install treeRepositorios 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 padrecd ~ o cd → homecd - vuelve al anteriorcd / 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
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.
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$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
grep→global regular expression print
$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
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.
proceso → usuario/grupo → recurso → permisos → operación permitida o denegada
Tres permisos:
| En un fichero | En un directorio | |
|---|---|---|
r read | leer el contenido | listar (ls) |
w write | modificarlo | crear, borrar o renombrar entradas |
x execute | ejecutarlo | entrar (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 recursivowww-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.
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 · reloadreload recarga config sin tumbar del todo (Apache, después de un virtual host)sudo service apache2 restart (en Debian/Ubuntu acaba llamando a systemctl)$sudo systemctl restart apache2
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
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 legibledu -sh * totales de cada entrada del directorio actual$du -sh /var/www/html
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)tar -xzf proyecto.tar.gz$tar -czf proyecto.tar.gz app/
No son comandos de paquete, pero ahorran más tiempo que media chuleta.
| Qué | Para qué |
|---|---|
Tab | Autocompleta rutas y comandos |
↑ / ↓ | Recorre el historial |
Ctrl+C | Corta el proceso en primer plano (ping, tail -f, top) |
Ctrl+L o clear | Limpia la pantalla |
Ctrl+D | Fin 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ímbolo | Qué hace | Ejemplo |
|---|---|---|
| | Tubería: la salida de uno entra en el siguiente | ps aux | grep apache |
> | Escribe / sobrescribe un fichero | echo hola > nota.txt |
>> | Añade al final | echo otra >> nota.txt |
&& | Encadena si lo anterior fue bien | mkdir app && cd app |
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
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
chmod, chown, www-dataEn 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