Resumen de comandos imprescindibles de GNU/Linux¶
Archivos y directorios:¶
| Coman. | Descripción |
|---|---|
| ls | listar |
| cd | change directory |
| pwd | print working directory |
| rm | remove file o directory CUIDADO: No pregunta |
| cp | copy |
| mv | move/rename |
| cat ARCHIVO | “vuelca” contenido archivo |
| tail ARCHIVO | muestra últimas líneas |
| nano ARCHIVO | edita contenido de archivo |
Ojo: algunos sistemas no tienen
nanoy debemos usarvipor lo que es importante que para salir uses:q,:wq, o:q!
-9 comandos-
Permisos:¶
| Coman. | Descripción |
|---|---|
| chmod | change permisos chmod u+x {{archivo}} |
| chown | change ownership (propietario) |
| sudo | switch user do -> ejecuta como otro usuario |
-3 comandos-
Process¶
| Coman. | Descripción |
|---|---|
| ps | mostrar processos ps aux (ojo sin -) |
| top | monitor de sistema |
| kill | mata (con katana) kill -9 {{proc}} |
-3 comandos-
System Info¶
| Coman. | Descripción |
|---|---|
| free | muestra uso de memoria free -h |
-1 comando-
Networking¶
| Comando | Descripción |
|---|---|
| sudo ss -tutapon | Muestra conexiones y puertos |
| ip a | Muestra información de las interfaces de red |
| ip r | Muestra información de las rutas |
| curl http://IP:PUERTO | Realiza una petición GET http o https |
| curl -I http://IP:PUERTO | Realiza una petición HEAD |
| curl -L amazon.es | Realiza una petición siguiendo las redirecciones |
| ping IP | Realiza una petición “echo request” para verificar la conectividad |
-4 comandos-
Remoto¶
| Coman. | Descripción |
|---|---|
| ssh | secure shell |
| scp | secure cp |
| rsync | sincroniza directorios (no en windows) rsync -azvP origen destino |
scp es mejor para pocos archivos grandes y rsync para muchos archivos pequeños.
Especial SSH:
-3 comandos-
Total: 23 comandos IMPRESCINDIBLES
Pipes (tuberías):¶
Investiga que hacen los siguientes comandos:
echo “hola” > uno.txt
cat uno.txt | tee dos.txt
echo “adios” >> uno.txt
cat uno.txt dos.txt
cat <<-EOF > tres.txt
hola mundo
EOF
cat tres.txt
cat uno.txt <(cat tres.txt)
cat tres.txt | cat - uno.txt
Gestión de Errores:
ls no_existe
ls no_existe 2> error.txt
cat error.txt
ls no_existe 2> /dev/null
Nota:
- 1> es equivalente a > y es la salida. Si no se indica se utiliza la standard (monitor).
- 2> es la salida de error. Si no se indica se utiliza la standad.
- 2>&1 conecta ambas salidas al descriptor porporcinado.
Y la versión con extras¶
Ayudas¶
| Comando | Descripción |
|---|---|
| whatis | ¿Qué es? |
| whereis | ¿Dónde está? |
| tldr | Ejemplos de uso |
| cheat.sh | La versión on-line de tl;dr anterior |
| info | algo más de información |
| man | el manual completo (muy detallado) |
Archivos y directorios¶
| Coman. | Descripción |
|---|---|
| ls | listar |
| cd | change directory |
| pwd | print working directory |
| echo $PWD | print working directory |
| rm | remove file o directory CUIDADO: No pregunta |
| cp | copy |
| mv | move/rename |
| cat ARCHIVO | “vuelca” el contenido del archivo |
| cat ARCHIVO | more | “vuelca” contenido archivo paginándolo |
| less ARCHIVO | muestra el contenido del archivo (navegable) |
Ojo: algunos sistemas no tienen
nanoy debemos usarvipor lo que es importante que para salir uses:q,:wq, o:q!Ojo: algunos sistemas ni si quiera tienen
viy debemos usarcat << EOF > file.txt, finalizando la edición con una línea que contenga la etiquetaEOF.
| Coman. | Descripción |
|---|---|
| ln | create link to file |
| touch | crea archivo vacio o modifica fechas |
| head | muestra primeras líneas |
| find | buscar archivos y dir: por nombre, por tipo, por fecha... |
| grep -n {{texto}} {{archivo}} | buscar el texto en el archivo. Muestra el número de línea |
| grep -vn {{texto}} {{archivo}} | buscar las líneas que NO contengan el texto en el archivo. Muestra el número de línea |
| find ./ -type f -iname "*.md" -exec grep -ln "pppoe" {} + 2> /dev/null | buscar, a partir del directorio actual, EN archivos regulares DE NOMBRE *.md que contengan el texto “pppoe” |
| du -h | muestra uso disco |
| du -hs * 2> /dev/null | sort -nr | head -5 | muestra los 5 directorios más grandes |
| lsblk | lista dispositivos de bloque |
Procesos¶
| Coman. | Descripción |
|---|---|
| kill {{PID}} | solicita finalizar proceso (equivalente a -15 o SIGINT) |
| kill -2 {{PID}} | interrumpe proceso (equivale a Ctr+c) |
| kill -9 {{PID}} | mata un proceso |
| kill -18 {{PID}} | solicita parar proceso (equivale a Ctr+z) |
| kill -19 {{PID}} | solicita restaurar proceso en fg |
| htop | ver procesos |
| top | ver procesos (menos amigable) |
| nice | establecer / cambiar prioridad |
Permisos:¶
| Comando | Descripción |
|---|---|
| chmod +x {{archivo}} | da permisos de ejecución para todos |
| chmod u+x {{archivo}} | da permisos de ejecución para el propietario |
| chmod o-x {{archivo}} | quita permisos de ejecución para otros |
| chmod g-x {{archivo}} | quita permisos de ejecución para el grupo |
| chown -R {{propietario}}:{{grupo}} {{archivo}} | cambia Recursivamente el propietario y grupo |
| sudo {{comando}} | ejecuta comando como usuario ROOT |
| sudo -u {{usuario}} {{comando}} | ejecuta comando como usuario |
Usuarios¶
| Comando | Descripción |
|---|---|
| less /etc/passwd | cut -d':' -f1,6 | grep home | Conocer los usuarios del sistema |
| sudo adduser nuevo_usuario | Crear nuevo usuario |
| sudo gpasswd -a nuevo_usuario docker | Añadimos el grupo docker al usuario |
| sudo -u nuevo_usuario -i | Acceder como nuevo usuario |
| sudo usermod -e 1970-01-01 nuevo_usuario | “Caducar” el password |
| sudo passwd -l nuevo_usuario | Desactivar contraseña (se puede acceder aún por ssh) |
| sudo usermod -s /sbin/nologin nuevo_usuario | Cambiar shell |
| sudo passwd --status nuevo_usuario | Confirmar bloqueo (buscar ‘L’) |
| sudo grep ^nuevo_usuario /etc/passwd | Confirmar ‘nologin’ |
| sudo deluser --remove-home --backup nuevo_usuario | Elimina usuario y home tras hacer un backup de sus datos |
Networking¶
Información¶
Propia:
| Comando | Descripción |
|---|---|
| sudo ss -tutapon | Muestra conexiones y puertos (-l también es interesante) |
| ip a | Muestra información de las interfaces de red |
| ip -br a | Muestra información de RED de las interfaces |
| ip -br l | Muestra información de ENLACE de las interfaces |
| ip r | Muestra información de las rutas |
| ip n | Muestra información de los neighbour |
| ethtool | Consulta / control de driver de red y conf hardware |
Nota: nstat es la versión antigua de ss. Puede invocarse ya que hay un wrapper de uno a otro, pero debemos evitar su uso.
De otros:
| Comando | Descripción |
|---|---|
| ip neigh | Consulta ARP en IPv4 y NDP en IPv6 |
| traceroute FQDN o IP | Imprime la ruta tomada |
| mtr FQDN o IP | my traceroute -> Similar a traceroute |
| dig FQDN | Nos da la IP o IPs del nombre del equipo completo (FQDN) |
| dig @servidor FQDN | Pide la IP al servidor dado. P.e: @1.1.1.1 |
| tcpdump -i eth0 | Captura los paquetes que pasan por eth0 |
| tcpdump -i eth0 port 443 | ... filtrado por puerto |
| tcpdump -i eth0 host 192.168.20.150 | ... filtrado por host |
| tcpdump -i eth0 -w volcado.pcap | ... volcado a archivo |
| nmap 192.168.1.10 | Escanea un equipo |
El volcado de tcpdump suele realizarse para el análisis posterior con cualquier editor y en especial con wireshark.
Comunicaciones¶
| Comando | Descripción |
|---|---|
| curl http://IP:PUERTO | Realiza una petición GET http o https |
| curl -I http://IP:PUERTO | Realiza una petición HEAD |
| curl -c archivo_de_cookie http://IP:PUERTO | Guarda las cookies |
| curl -c archivo_de_cookie http://IP:PUERTO | Utiliza las cookies |
| curl --json ‘{“nombre”: “luis”}‘ http://IP:PUERTO | Realiza petición POST enviando objeto JSON |
| curl --http2 http://IP:PUERTO | Realiza una petición GET sobre http versión 2 |
| curl --http3 http://IP:PUERTO | Realiza una petición GET sobre http versión 3 |
| curl http://IP:PUERTO -o volcado.html | Realiza un volcado de la respuesta |
| curl -L amazon.es | Realiza una petición siguiendo las redirecciones |
| curl -s .../archivo.json | jq ‘.atributo’ | Procesador de json |
| nc -l 8080 | Netcat: escucha en el puerto 8080 TCP |
| nc localhost 8080 | Netcat: conecta con el puerto 8080 TCP |
| nc -ul 8080 | Escucha en el puerto 8080 UDP |
| cat archivo | nc -4u -w1 localhost 8080 | Envía archivo al puerto 8080 UDP |
| socat -v TCP-LISTEN:8080,fork TCP:127.0.0.1:80 | Redirije streams del 8080 al 80 |
Información¶
printenvnos muestra todas las variables de entorno definidas en el sistema.declaremuestra todas las funciones definidas.declare -f funcionAmuestra la definición de lafuncionA.
Gestión de procesos¶
- Lanzar proceso en foreground (primer plano):
nano archivo.txt - Lanzar proceso en background (segundo plano):
nano archivo.txt &(añadir & al final) - Lanzar conjunto de procesos en _background_o
subshell:(cat archivo.txt | nano - ) & - Ver procesos en background:
jobsops - Recuperar procesos de background a foreground:
jobsnos da el jobID y con élfg %1(donde 1 sería el jobID). Esto es: si jobs nos arrojó[7]+ Ejecutando kate &, nosotros podremos traerlo con unfg %7. - Congelar proceso foreground: Ctrl + z
- Recuperar proceso congelado a foreground:
fg %1 - Recuperar proceso congelado a background:
bg