Víctor López Ferrando

30 comandes interessants per la consola de Linux

14 de setembre de 2017

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:

  1. Línies que només apareixen a file1.
  2. Línies que només apareixen a file2.
  3. Línies que apareixen tant a file1 com a file2.

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