Skip to content

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 nano y debemos usar vi por 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

rsync es ideal para sincronizar muchos archivos pequeños, siendo en algunas ocasiones scp es mejor si tenemos pocos archivos grandes, ya que premite continuar las copias (si el sistema remoto lo permite).

Especial SSH:

  1. Vídeo básico ssh
  2. Parte 2
  3. Parte 3

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

Con rsync, si tenemos que utilizar una llave de identificación diferente a la default private key emplearemos el comando:

rsync -avzP -e "ssh -i /home/local_user/.ssh/llave_privada" /path/origen usr@fqdn:/path/destino

Ojo: algunos sistemas no tienen nano y debemos usar vi por lo que es importante que para salir uses :q, :wq, o :q!

Ojo: algunos sistemas ni si quiera tienen vi y debemos usar cat << EOF > file.txt, finalizando la edición con una línea que contenga la etiqueta EOF.

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

  1. printenv nos muestra todas las variables de entorno definidas en el sistema.
  2. declare muestra todas las funciones definidas.
  3. declare -f funcionA muestra la definición de la funcionA.

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: jobs o ps
  • Recuperar procesos de background a foreground: jobs nos da el jobID y con él fg %1 (donde 1 sería el jobID). Esto es: si jobs nos arrojó [7]+ Ejecutando kate &, nosotros podremos traerlo con un fg %7.
  • Congelar proceso foreground: Ctrl + z
  • Recuperar proceso congelado a foreground: fg %1
  • Recuperar proceso congelado a background: bg