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