30 comandes interessants per la consola de Linux
Aquestes són 30 comandes i trucs per la consola de Linux que he recollit durant els anys.
1. Supervisa comanda (executa cada 2 s)
watch "ls -larth"
2. Mata programa que usa un port
sudo fuser -k 8000/tcp
3. Limita l'ús de memòria de les comandes següents
ulimit -Sv 1000 # 1000 KBs = 1 MB
ulimit -Sv unlimited # Elimina límit
4. Reanomena els fitxers seleccionats amb una expressió regular
rename 's/\.bak$/.txt/' *.bak
5. Obté la ruta completa d'un fitxer
readlink -f file.txt
6. Llista els continguts d'un tar.gz i extrau un fitxer
tar tf file.tgz
tar xf file.tgz static
7. Llista els fitxers ordenats per mida
ls -lS
8. Trace route bonic
mtr google.com
9. Trucs per cercar fitxers
find . -size 20c # Per mida (20 bytes)
find . -name "*.gz" -delete # Elimina
find . -exec echo {} \; # Un per línia
./file1
./file2
./file3
find . -exec echo {} \+ # Tots en la mateixa línia
./file1 ./file2 ./file3
10. Imprimeix text ad infinitum
yes
yes hola
11. Qui està amb la sessió iniciada?
w
12. Afegeix el número de línia
ls | nl
13. Grep amb sintaxi Perl (permet caràcters com \t)
grep -P "\t"
14. Cat del revés (començant pel final)
tac file
15. Comprova els permisos de cada directori que porta al fitxer
És útil per detectar errors de permisos, per exemple quan configurem un servidor web.
namei -l /path/to/file.txt
16. Executa comanda cada cop que s'actualitze un fitxer
while inotifywait -e close_write document.tex
do
make
done
17. Copia al porta-retalls
cat file.txt | xclip -selection clipboard
18. Comprova l'ortografia i la gramàtica en Latex
detex file.tex | diction -bs
Potser cal instal·lar: sudo apt-get install diction texlive-extra-utils
.
19. Comprova l'ús de recursos d'una comanda
/usr/bin/time -v ls
20. Reordena aleatòriament les línies d'un fitxer
cat file.txt | sort -R
cat file.txt | sort -R | head # Tria una mostra aleatòria
# Encara millor (suggerit per xearl a Hacker news):
shuf file.txt
21. Segueix executant programa després d'abandonar una sessió SSH
Si el programa no necessita cap interacció:
nohup ./script.sh &
Si necessites introduir manualment alguna dada i després vols sortir:
./script.sh
<Escriu el que necessites>
<Ctrl-Z> # envia programa a dormir
jobs -l # esbrina l'id de la tasca
disown -h jobid # renuncia a la "propietat" de la tasca
bg # continua l'execució
Per descomptat, també pots usar screen
o tmux
per aquest propòsit.
22. Executa comanda per un temps limitat
timeout 10s ./script.sh
# Reinicia cada 30 minuts
while true; do timeout 30m ./script.sh; done
23. Combina les línies de dos fitxers ordenats
comm file1 file2
Escriu aquestes tres columnes:
- Línies que només apareixen a
file1
. - Línies que només apareixen a
file2
. - Línies que apareixen tant a
file1
com afile2
.
Les opcions -1, -2, -3
permeten no escriure cadascuna d'aquestes columnes.
24. Divideix un fitxer gran en fitxer amb un mateix nombre de línies
split -l LÍNIES -d file.txt output_prefix
25. Reinicia la partició de swap
Si un programa necessita massa memòria, la partició swap es pot omplir amb la resta de la memòria, i quan atures el programa tot va lent. Per arreglar-ho cal reiniciar la partició swap:
sudo swapoff -a
sudo swapon -a
26. Arregla un sistema de fitxers ext4 que té problemes amb el superblock
sudo fsck.ext4 -f -y /dev/sda1
sudo fsck.ext4 -v /dev/sda1
sudo mke2fs -n /dev/sda1
sudo e2fsck -n <first block number of previous list> /dev/sda1
27. Crea un fitxer buit d'una mida donada
fallocate -l 1G test.img
28. Manipula PDFs des de la línia de comandes
Per ajuntar, mesclar, sel·leccionar, etc. pdftk
és una gran eina:
pdftk *.pdf cat output all.pdf # Junta els PDFs
pdftk A=in.pdf cat A5 output out.pdf # Extrau una pàgina d'un PDF
També pots manipular el contingut amb cpdf
:
cpdf -draft in.pdf -o out.pdf # Elimina les imatges
cpdf -blacktext in.pdf -o out.pdf # Converteix tot el text a color negre
29. Monitora el progrés d'una comanda segons el text que escriu
# Escriu dades aleatòries, codifica-les en base64 i monitora
# com de ràpid s'envien a /dev/null
cat /dev/urandom | base64 | pv -lbri2 > /dev/null
# Opcions de pv:
# -l, línies
# -b, comptador de línies totals
# -r, mostra les línies per segon
# -i2, actualitza cada 2 segons
30. Busca paquets que contenen un fitxer donat a Ubuntu
apt-file update
apt-file search dir/file.h