Full resum d’ordres de la terminal

 ________________________________________
/ Alerta! Surt d'aquí si et mareges amb  \
\ facilitat. Jo t'he avisat.             /
 ----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
                

Orientació i navegació

whoami                         # usuari actual
pwd                            # ruta actual
ls -lah                        # llista (ocults, detalls)
cd /ruta/absoluta              # canviar de directori
cd .. | cd - | cd ~            # superior | tornar | casa
pushd DIR; popd                # guardar / tornar a una ruta

Arxius i directoris

En l’argot de Linux els directoris són les carpetes.

touch nota.txt                 # crear arxiu
mkdir -p docs/projectes        # crear dins de directoris
cp arxiu1 arxiu2               # copiar arxiu
cp -r dir dir_respaldo         # copiar directori
mv origen destí.               # moure/reanomenar
rm arxiu.txt.                  # borrar arxiu
rm -rf dir                     # ¡ALERTA! borrar forçant!! ⚠️

Veure / comptar text

cat | less                     # veure el contingut
head -n 20 | tail -n 50        # principi o final
nl arxiu.txt                   # numera línies
wc -l -w -m arxiu.txt      # compta línies, paraules i/o caràcters
awk -F',' '{print $1,$3}' datos.csv

Cerca potent

# GREP (contingut)
grep -i "patró" arxiu          # sense distingir majúscules
grep -i -c "patró" arxiu       # comptar coincidències
grep -i -v "patró" arxiu       # excloure
 
# FIND (per nom, tipus i mida)
find . -type f -name "*.log"
find . -type f -size +1M

Wildcards (regex)

ls *.txt        # acabats en .txt
ls file?.txt    # amb un caràcter que pot canviar
ls *[o].*       # nom d'arxiu acabat en "o"
ls *.{md,log}   # extensions múltiples (brace expansion)

Redireccions i canonades (pipes)

  • stdin (0):entrada estàndard
  • stdout (1): sortida estàndard
  • stderr (2): sortida d’errors estàndard
echo "hola" > out.txt          # sobrescriu ⚠️
echo "món" >> out.txt.         # agrega a l'arxiu
cmd1 | cmd2                    # sortida d'1 → entrada de 2
ls inexistent 2> errors.log    # stderr a arxiu
cmd &> todo.log                # stdout+stderr junts

Exemples concrets

Com que em calia més context, he decidit fer-ne un

 
# 1. Comportament per defecte (sense redirigir)
# L'stdout i l'stderr es barregen a la pantalla.
 
$ ls dades.txt fals.txt
ls: cannot access 'fals.txt': No such file or directory  # (Això és stderr)
dades.txt                                                # (Això és stdout)
 
 
# 2. Capturar només la sortida correcta (>)
# L'error continua sortint per la pantalla, però l'stdout es desa a l'arxiu.
 
$ ls dades.txt fals.txt > llista.txt
ls: cannot access 'fals.txt': No such file or directory
 
$ cat llista.txt
dades.txt
 
 
# 3. Capturar només l'error (2>)
# La sortida correcta es mostra per pantalla, l'error es desa.
 
$ ls dades.txt fals.txt 2> errors.log
dades.txt
 
$ cat errors.log
ls: cannot access 'fals.txt': No such file or directory
 
 
# 4. Redirigir les dues coses a llocs diferents
# Pantalla neta. Cada flux va al seu arxiu corresponent.
 
$ ls dades.txt fals.txt > llista.txt 2> errors.log
 
 
# 5. Silenciar els errors (/dev/null)
# /dev/null és el "forat negre" del sistema UNIX. Tot el que s'hi envia s'esborra instantàniament. Molt útil per ocultar advertències.
 
$ ls dades.txt fals.txt 2> /dev/null
dades.txt
 
 
# 6. Entrada estàndard (<)
# Envia el contingut d'un arxiu a una comanda, com si ho haguessis teclejat. Per exemple, la comanda wc -l compta línies.
 
$ wc -l < llista.txt
1
 
 
# 7. Combinació avançada de canonades (|)
# Es poden encadenar tantes canonades com calgui. L'ordre s'executa d'esquerra a dreta.
 
$ cat access.log | grep "404" | wc -l
# Llegeix el log, cerca "404" i et diu quantes línies hi ha; és a dir, quants errors 404 hi ha hagut

Operadors de control

cmd1; cmd2                      # sequencial passi el que passi
cmd1 && cmd2                    # només si cmd1 és correcte
cmd1 || cmd2                    # només si cmd1 falla

Processos

sleep 1000 &                   # background (& al final)
jobs                           # llistar treballs de BG
fg %1 | bg %1                  # portar/enviar treball
ps aux | grep nom              # snapshot processos
top | htop                     # monitor en vivo (htop amb apt/brew)
kill -9 PID                    # acabar procés (SIGKILL)

Permisos

ls -la                         # -rwxrw-r--
chmod u+x script.sh            # atorgar execució a l'usuari
chmod 755 script.sh            # u=rwx, g=rx, o=rx
chmod 644 archivo.txt          # u=rw, g=r, o=r
 
# (4 = r, 2 = w, 1 = x)

Variables de entorno & alias

echo $SHELL | echo $PATH
mybar="hola"; echo $mybar
export mybar="hola"            # disponible a subprocessos
echo 'export mybar="hola"' >> ~/.bashrc && source ~/.bashrc
 
alias                          # veure els àlies
alias cls='clear'              # fer un àlies temporal
echo "alias cls='clear'" >> ~/.bashrc && source ~/.bashrc   # fer un àlies permanent
type ls | which ls | whereis ls | whatis ls

Explicació

L’estructura (ls -la)

  • Posició 1: Tipus. Un guió (-) indica un arxiu normal. Una d indica un directori. Una l indica un enllaç simbòlic.
  • Bloc 1 (Posicions 2-4): Permisos de l’Usuari propietari (u). En el teu exemple, rwx (llegeix, escriu, executa).
  • Bloc 2 (Posicions 5-7): Permisos del Grup propietari (g). En el teu exemple, rw- (llegeix i escriu, no executa).
  • Bloc 3 (Posicions 8-10): Permisos de la resta del món, els Altres (o). En el teu exemple, r-- (només llegeix).

Els permisos i els valors (sistema octal)

Cada bloc té tres posicions possibles. A l’hora de definir-les numèricament, cada permís té un pes fix que es suma.

  • r (Read = 4): Dret a obrir i llegir l’arxiu. (En directoris, permet llistar-ne el contingut).
  • w (Write = 2): Dret a modificar l’arxiu. (En directoris, permet crear-hi o eliminar-ne fitxers).
  • x (Execute = 1): Dret a executar el fitxer com a programa. (En directoris, permet entrar-hi amb cd).
  • - (Cap = 0): Absència del permís corresponent.

Mètodes per modificar-los (chmod)

Hi ha dues vies de gestionar els permisos. Cadascuna respon a una necessitat diferent.

1. Mode simbòlic (modificació relativa) Actua exclusivament sobre la part especificada, sense alterar els permisos que ja tenien les altres categories. Requereix triar a qui s’aplica (u, g, o, o a per “a tothom”), l’acció (+ per atorgar, - per denegar) i el permís (r, w, x).

  • chmod u+x script.sh: Afegeix execució només a l’usuari propietari.
  • chmod o-w arxiu.txt: Retira el permís d’escriptura a la resta d’usuaris.

2. Mode octal (modificació absoluta) Sobreescriu els permisos complets de les tres categories de cop. És la notació estàndard i més àgil quan es coneix l’estat final desitjat.

  • chmod 755 script.sh: L’usuari té un 7 (4+2+1, per tant rwx). El grup i els altres tenen un 5 (4+1, per tant r-x). És l’estàndard òptim i segur per a scripts i directoris.
  • chmod 644 arxiu.txt: L’usuari rep un 6 (4+2, per tant rw-). El grup i els altres reben un 4 (només r--). És la configuració per defecte recomanada per a fitxers no executables (documents, configuracions, logs).

Paquets

# Debian/Ubuntu
sudo apt update && sudo apt upgrade
sudo apt install neofetch
sudo apt remove|purge paquet
 
# macOS (Homebrew)
brew update && brew upgrade
brew search|info|install paquet
brew list | brew uninstall paquet | brew cleanup

Tmux

# Tmux (prefix por defecte: Ctrl+b)
tmux new -s sessió
# Dividir: Ctrl+b % (vertical) | Ctrl+b " (horitzontal)
# Nova finestra: Ctrl+b c | Reanomenar: Ctrl+b ,
tmux ls | tmux attach -t sessió

Xarxa i web

ip a            # interfícies y adreces
ip r            # taula de rutes
ping domini     # conectivitat (Ctrl+C per a estadístiques)
curl URL        # GET ràpid (→ arxiu: > index.html)
wget URL        # descarregar arxiu
nmap HOST       # escanneig de ports (ús avançat)
traceroute HOST # ruta de salts