Amb l'entorn ja muntat a la lliçó anterior —Bash 5.x, el teu ~/veloz-ops creat i el PATH configurat— ha arribat el moment de moure't pel sistema amb desimboltura. Navegar per la línia d'ordres no és cap tràmit: és l'habilitat que sosté tota la resta. Quan al Mòdul 9 el teu script hagi de localitzar /var/log/veloz/acces.log des de qualsevol directori, o quan a les tres de la matinada hagis d'esbrinar què està omplint el disc de srv-veloz-01, tot es reduirà a moure't i mirar amb precisió. En aquesta lliçó aprendràs l'anatomia d'una ordre, el mapa del sistema de fitxers de Linux i les eines per recórrer-lo i inspeccionar-lo.

Contingut

  1. Anatomia del prompt i d'una ordre
  2. L'arbre de directoris de Linux
  3. Rutes absolutes i relatives
  4. pwd: on soc
  5. cd: moure's
  6. ls: mirar
  7. Interpretar la sortida de ls -l
  8. tree: veure l'estructura d'un cop d'ull
  9. pushd i popd: pila de directoris
  10. Inspeccionar sense obrir: file, stat, du i df
  11. Recorregut guiat per la infraestructura de Veloz Envíos

  1. Anatomia del prompt i d'una ordre

1.1 El prompt

El prompt és la línia que Bash imprimeix esperant les teves ordres. Amb la configuració que vam deixar a la lliçó anterior té aquesta forma:

joan@srv-veloz-01:~/veloz-ops$

Cada peça informa d'alguna cosa:

Part Significat
joan Usuari amb qui treballes
@ Separador
srv-veloz-01 Màquina on ets
: Separador
~/veloz-ops Directori actual (~ és la teva carpeta personal)
$ Usuari normal. Si fossis root, aquí hi veuries #

Aquest darrer caràcter mereix atenció: # significa que tens permisos totals i que un error pot ser irreversible. Acostuma't a mirar-lo abans d'executar res destructiu.

1.2 Les parts d'una ordre

Una ordre en Bash es descompon així:

ls -l -h /var/log/veloz
ordre    opcions       argument
  ls     -l -h    /var/log/veloz
  • Ordre: el programa que s'ha d'executar (ls).
  • Opcions (o flags): modifiquen el comportament. Comencen per guionet.
  • Arguments: allò sobre el qual actua l'ordre.

Les opcions tenen dos formats que convé distingir:

Format Exemple Característiques
Curt -l, -h Una lletra. Es poden agrupar: -lh equival a -l -h
Llarg --human-readable Paraula completa, més llegible. No s'agrupen

Aquestes quatre formes són equivalents:

ls -l -h /var/log/veloz
ls -lh /var/log/veloz
ls --format=long --human-readable /var/log/veloz
ls -l --human-readable /var/log/veloz

Regla pràctica: fes servir opcions curtes quan teclegis de manera interactiva i llargues quan escriguis scripts. En un script, --human-readable s'explica sol; -h obliga a consultar el manual (i en altres ordres -h significa «ajuda», cosa que indueix a error).

Quan una opció llarga porta valor, s'escriu amb = o amb espai:

ls --sort=time /var/log/veloz
ls --sort time /var/log/veloz

I un detall que salva situacions estranyes: -- marca el final de les opcions. Si algun dia tens un fitxer anomenat -informe.txt, ls -- -informe.txt el tracta com a argument i no pas com a opció.

  1. L'arbre de directoris de Linux

A Linux no hi ha lletres d'unitat. Tot penja d'un únic origen: l'arrel, /. Els discos addicionals, els USB o les particions de xarxa es «munten» en algun punt d'aquest arbre.

graph TD
    R["/"] --> etc["/etc<br/>configuració"]
    R --> var["/var<br/>dades variables"]
    R --> srv["/srv<br/>dades de serveis"]
    R --> home["/home<br/>usuaris"]
    R --> tmp["/tmp<br/>temporals"]
    R --> usr["/usr<br/>programes"]
    var --> log["/var/log"]
    log --> veloz["/var/log/veloz<br/>acces.log, app.log"]
    srv --> sv["/srv/veloz/dades<br/>enviaments.csv"]
    home --> joan["/home/joan (~)"]
    joan --> ops["~/veloz-ops<br/>bin lib etc logs"]
    usr --> bin["/usr/bin<br/>ls, grep, date..."]

Els directoris que faràs servir cada dia:

Directori Què conté Exemple a Veloz Envíos
/ L'arrel de tot
/etc Fitxers de configuració del sistema /etc/nginx/, /etc/passwd
/var Dades que varien durant l'operació Registres, cues, memòries cau
/var/log Registres del sistema i de les aplicacions /var/log/veloz/acces.log
/srv Dades servides pels serveis de la màquina /srv/veloz/dades/enviaments.csv
/home Carpetes personals dels usuaris /home/joan, abreujat ~
/tmp Temporals; s'esborra en reiniciar Fitxers intermedis d'scripts
/usr/bin Programes del sistema per a tots els usuaris ls, grep, date, awk
/usr/local/bin Programes instal·lats manualment per l'administrador Eines pròpies
/opt Programari de tercers autocontingut Agents de monitoratge
/root Carpeta personal del superusuari
/proc Sistema de fitxers virtual amb informació del kernel /proc/cpuinfo, /proc/meminfo
/dev Dispositius representats com a fitxers /dev/null, /dev/sda

Aquesta organització no és arbitrària: la defineix el FHS (Filesystem Hierarchy Standard). Conèixer-la et permet endevinar on són les coses en qualsevol servidor Linux, encara que no l'hagis vist mai. Si et diuen «revisa els registres de l'aplicació», ja saps que començaràs mirant a /var/log.

  1. Rutes absolutes i relatives

Una ruta és l'adreça d'un fitxer o directori. Hi ha dues maneres d'expressar-la.

  • Ruta absoluta: comença per / i descriu el camí complet des de l'arrel. És inequívoca i funciona des de qualsevol lloc.
    /var/log/veloz/acces.log
    
  • Ruta relativa: no comença per / i s'interpreta a partir del directori actual.
    veloz/acces.log     (si ets a /var/log)
    

Bash entén, a més, quatre dreceres fonamentals:

Símbol Significat Exemple
. El directori actual ./informe.sh
.. El directori pare cd ..
~ La teva carpeta personal (/home/joan) cd ~/veloz-ops
- El directori anterior (on eres abans) cd -

Exemples amb el directori actual a /var/log/veloz:

Escrius Es resol com
acces.log /var/log/veloz/acces.log
./acces.log /var/log/veloz/acces.log
../syslog /var/log/syslog
../../log/veloz /var/log/veloz
~/veloz-ops/bin /home/joan/veloz-ops/bin
/srv/veloz/dades /srv/veloz/dades

Quan cal fer servir cadascuna? La regla professional és clara:

  • Als scripts, rutes absolutes. Un script de veloz-ops llançat per cron pot arrencar des de qualsevol directori; si fa servir rutes relatives, fallarà de manera imprevisible.
  • De manera interactiva, relatives. Es tecleja molt menys.

La drecera - mereix una menció especial perquè estalvia moltíssim temps:

cd /var/log/veloz
cd /srv/veloz/dades
cd -
/var/log/veloz

cd - et retorna al directori anterior i, a més, imprimeix on ha anat. Alternar entre dues ubicacions llunyanes es converteix en una sola tecla.

  1. pwd: on soc

pwd (print working directory) respon la pregunta més bàsica.

pwd
/home/joan/veloz-ops

Sembla innecessari si el prompt ja ho mostra, però no ho és: hi ha prompts que només ensenyen el nom curt del directori (\W en lloc de \w), i en un script no hi ha prompt en absolut.

Té un matís interessant amb els enllaços simbòlics:

pwd -P

-P (physical) mostra la ruta real, resolent els enllaços simbòlics. Per defecte, pwd mostra la ruta lògica, és a dir, el camí pel qual hi vas arribar. Si /srv/veloz/dades fos en realitat un enllaç a /mnt/dades-veloz, pwd diria la primera i pwd -P la segona. En diagnòstics d'espai al disc, aquesta diferència importa.

  1. cd: moure's

cd (change directory) canvia el directori actual. Les seves formes més útils:

cd /var/log/veloz      # ruta absoluta
cd veloz               # ruta relativa (des de /var/log)
cd ..                  # pujar un nivell
cd ../..               # pujar dos nivells
cd ~                   # anar a la teva carpeta personal
cd                     # idèntic a 'cd ~'
cd -                   # tornar al directori anterior
cd ~/veloz-ops/bin     # combinant ~ i ruta relativa

Una seqüència realista de treball a srv-veloz-01:

cd /var/log/veloz
pwd
cd ../..
pwd
cd -
pwd
/var/log/veloz
/var
/var/log/veloz

Fixa't en el detall: cd ../.. des de /var/log/veloz puja dos nivells i aterra a /var, no pas a l'arrel. Cada .. retrocedeix exactament un esglaó.

Un apunt tècnic important que s'entendrà del tot a la lliçó següent: cd no és cap programa, és un builtin de Bash. Ho ha de ser. Si fos un executable extern, es llançaria com a procés fill, canviaria el seu directori i moriria, deixant el teu intacte. Per això man cd no troba res i cal fer servir help cd; ho veurem a 01-05.

Autocompletat, que aquí és imprescindible: escriu cd /var/log/vel i prem Tab. Bash completa fins a /var/log/veloz/. Si hi ha diverses opcions possibles, prem Tab dues vegades per llistar-les. Les dreceres de teclat completes es veuen a 02-06, però aquesta fes-la servir des d'avui: redueix dràsticament els errors de teclejat.

  1. ls: mirar

ls llista el contingut d'un directori. És probablement l'ordre que més cops executaràs a la vida.

ls
bin  etc  lib  logs

Sense arguments, llista el directori actual. Li'n pots indicar un altre:

ls /var/log/veloz
acces.log  acces.log.1  app.log  app.log.1  veloz-api.log

6.1 Les opcions que faràs servir de debò

Opció Nom llarg Què fa
-l --format=long Format llarg: permisos, propietari, mida, data
-a --all Mostra també els fitxers ocults (els que comencen per .)
-A --almost-all Com -a però sense . ni ..
-h --human-readable Mides en K, M, G en lloc de bytes (requereix -l)
-t --sort=time Ordena per data de modificació, més recent primer
-r --reverse Inverteix l'ordre
-S --sort=size Ordena per mida, més gran primer
-R --recursive Baixa per tots els subdirectoris
-d --directory Mostra el directori en si, no pas el seu contingut
-i --inode Mostra el número d'inode
-F --classify Hi afegeix un sufix segons el tipus (/ directori, * executable, @ enllaç)

Les combinacions que se't convertiran en reflex:

ls -lh /var/log/veloz
total 47M
-rw-r--r-- 1 www-data adm   28M ago  3 10:14 acces.log
-rw-r--r-- 1 www-data adm  9,4M ago  2 23:59 acces.log.1
-rw-r--r-- 1 veloz    veloz 6,2M ago  3 10:15 app.log
-rw-r--r-- 1 veloz    veloz 2,1M ago  2 23:59 app.log.1
-rw-r--r-- 1 veloz    veloz 1,3M ago  3 09:02 veloz-api.log
ls -lt /var/log/veloz

Ordenat per data: el primer és el que s'ha modificat més recentment. Aquesta és l'ordre estrella quan alguna cosa acaba de fallar: et diu immediatament quin registre s'està escrivint ara mateix.

ls -lhS /var/log/veloz

Ordenat per mida de més gran a més petit: l'ordre estrella quan el disc s'omple.

ls -la ~
total 68
drwxr-xr-x 8 joan joan 4096 ago  3 09:30 .
drwxr-xr-x 3 root root 4096 jul 12 08:00 ..
-rw------- 1 joan joan 2814 ago  3 10:02 .bash_history
-rw-r--r-- 1 joan joan 3841 ago  3 09:28 .bashrc
-rw-r--r-- 1 joan joan  807 jul 12 08:00 .profile
drwx------ 2 joan joan 4096 jul 12 08:05 .ssh
drwxrwxr-x 6 joan joan 4096 ago  3 09:30 veloz-ops

Aquí apareix un concepte clau: a Linux, un fitxer és ocult simplement perquè el seu nom comença per punt. No hi ha cap atribut especial. Per això ~/.bashrc no es veu amb un ls normal. Els directoris . i .. que hi apareixen són el mateix directori i el seu pare.

  1. Interpretar la sortida de ls -l

Aquesta és una d'aquelles habilitats que es fan servir cada dia al llarg de tota una carrera professional. Prenguem-ne una línia:

-rw-r--r-- 1 veloz veloz 6291456 ago  3 10:15 app.log

Es descompon en set camps:

# Valor Significat
1 -rw-r--r-- Tipus de fitxer i permisos
2 1 Nombre d'enllaços durs
3 veloz Usuari propietari
4 veloz Grup propietari
5 6291456 Mida en bytes (amb -h, 6,0M)
6 ago 3 10:15 Data i hora de l'última modificació
7 app.log Nom

El primer camp es llegeix en quatre blocs:

-        rw-        r--        r--
tipus  propietari   grup      altres

El primer caràcter indica el tipus:

Caràcter Tipus
- Fitxer regular
d Directori
l Enllaç simbòlic
c Dispositiu de caràcters (p. ex. /dev/null)
b Dispositiu de blocs (p. ex. un disc)
p Canonada amb nom (FIFO)
s Socket

Els tres blocs següents són permisos: r llegir, w escriure, x executar; un guionet significa que aquest permís no està concedit. Així, -rw-r--r-- es llegeix: fitxer regular, el propietari pot llegir i escriure, el grup només llegir, la resta només llegir.

Aquesta anàlisi explica coses pràctiques de manera immediata. Si mires d'escriure a /var/log/veloz/app.log sent joan i el fitxer és de veloz amb permisos -rw-r--r--, obtindràs Permís denegat. I si un script teu no arrenca amb ./script.sh, el primer que miraràs és si té la x. Els permisos, com canviar-los i la notació octal s'estudien en profunditat a la lliçó 02-03; aquí només cal que els sàpigues llegir.

Un cas especial que veuràs molt en un servidor:

ls -l /var/log/veloz/actual.log
lrwxrwxrwx 1 root root 8 ago  3 00:00 /var/log/veloz/actual.log -> app.log

La l inicial i la fletxa -> indiquen un enllaç simbòlic: un fitxer que apunta a un altre. Els permisos rwxrwxrwx d'un enllaç són sempre així i no volen dir res; els que manen són els del destí.

  1. tree: veure l'estructura d'un cop d'ull

tree dibuixa la jerarquia de directoris. No ve instal·lat per defecte en molts sistemes:

sudo apt install tree      # Debian/Ubuntu
sudo dnf install tree      # Fedora/RHEL
tree ~/veloz-ops
/home/joan/veloz-ops
├── bin
├── etc
├── lib
└── logs

5 directories, 0 files

Opcions útils:

Opció Efecte
-L n Limita la profunditat a n nivells
-d Només directoris
-a Inclou els ocults
-h Mostra mides llegibles
-f Mostra la ruta completa de cada element
tree -L 2 -d /var/log
/var/log
├── apt
├── nginx
├── unattended-upgrades
└── veloz

4 directories

Limitar la profunditat amb -L és gairebé obligatori en directoris grans: sense això, tree / pot escopir centenars de milers de línies.

Si tree no està disponible i no el pots instal·lar (una cosa habitual en servidors de producció o contenidors), l'alternativa és ls -R, que veurem al recorregut final, o find combinat amb format, que s'estudia a 05-01.

  1. pushd i popd: pila de directoris

cd - alterna entre dos directoris, però de vegades n'has de manejar tres o quatre. Per a això Bash manté una pila de directoris.

  • pushd RUTA: apila el directori actual i es mou a RUTA.
  • popd: desapila i torna al directori del cim.
  • dirs -v: mostra la pila numerada.
cd ~/veloz-ops
pushd /var/log/veloz
/var/log/veloz ~/veloz-ops
pushd /srv/veloz/dades
/srv/veloz/dades /var/log/veloz ~/veloz-ops
dirs -v
 0  /srv/veloz/dades
 1  /var/log/veloz
 2  ~/veloz-ops
popd
pwd
/var/log/veloz ~/veloz-ops
/var/log/veloz
popd
pwd
~/veloz-ops
/home/joan/veloz-ops

Cada pushd imprimeix la pila completa, amb la posició actual a l'esquerra. És l'eina ideal quan estàs diagnosticant una incidència i has de saltar entre registres, dades i scripts sense perdre el fil. També pots saltar directament a una posició: pushd +2 fa rotar la pila fins a l'element número 2.

  1. Inspeccionar sense obrir: file, stat, du i df

Abans d'obrir un fitxer convé saber què és i quant ocupa. Quatre ordres cobreixen el 90 % dels casos.

10.1 file: de quin tipus és un fitxer

Linux no es fia de l'extensió: file examina el contingut per determinar el tipus.

file /var/log/veloz/app.log /srv/veloz/dades/enviaments.csv /usr/bin/ls ~/veloz-ops
/var/log/veloz/app.log:         ASCII text
/srv/veloz/dades/enviaments.csv: CSV text
/usr/bin/ls:                    ELF 64-bit LSB pie executable, x86-64, dynamically linked
/home/joan/veloz-ops:           directory

La seva utilitat pràctica és enorme: evita que obris un binari de 2 GB amb un editor de text i bloquegis la terminal. Abans de fer cat a un fitxer desconegut, passa-li file.

Un ús molt pertinent per a Veloz Envíos: detectar fitxers comprimits amb una extensió enganyosa.

file /var/log/veloz/acces.log.1
/var/log/veloz/acces.log.1: gzip compressed data, from Unix

Encara que no porti .gz, està comprimit, i caldria llegir-lo amb zcat en lloc de cat.

10.2 stat: les metadades completes

stat /var/log/veloz/app.log
  Fitxer: /var/log/veloz/app.log
  Mida: 6291456    Blocs: 12288      Bloc E/S: 4096   fitxer regular
Dispositiu: 8,1  Node-i: 262147   Enllaços: 1
Accés: (0644/-rw-r--r--)  Uid: ( 1001/  veloz)   Gid: ( 1001/  veloz)
      Accés: 2026-08-03 10:15:22.000000000 +0200
Modificació: 2026-08-03 10:15:22.000000000 +0200
      Canvi: 2026-08-03 10:15:22.000000000 +0200
    Creació: 2026-07-01 08:00:00.000000000 +0200

stat dona el mateix que ls -l però amb precisió total, incloses les tres marques de temps que Linux manté:

Marca Nom Canvia quan...
atime Accés Es llegeix el contingut
mtime Modificació Es canvia el contingut
ctime Canvi Canvien el contingut o les metadades (permisos, propietari)

Confondre mtime amb ctime és un error habitual en auditories: si algú va canviar els permisos d'un fitxer però no el seu contingut, mtime continua igual i només ctime el delata.

stat també admet formats personalitzats, molt útils per a scripts:

stat -c '%n te %s bytes, modificat el %y' /var/log/veloz/app.log
/var/log/veloz/app.log te 6291456 bytes, modificat el 2026-08-03 10:15:22.000000000 +0200

On %n és el nom, %s la mida i %y la data de modificació. Al Mòdul 9 farem servir aquesta forma per comprovar si un registre s'ha actualitzat recentment.

10.3 du: quant ocupa un directori

du (disk usage) suma l'espai ocupat.

du -sh /var/log/veloz
47M	/var/log/veloz
  • -s (summarize): un únic total en lloc del detall de cada subdirectori.
  • -h (human-readable): en K, M, G.

Per veure el repartiment per subdirectori, ordenat de més gran a més petit:

du -h --max-depth=1 /var/log | sort -h -r | head -5
312M	/var/log
47M	/var/log/veloz
28M	/var/log/nginx
12M	/var/log/journal
4,1M	/var/log/apt

Aquesta ordre és la resposta estàndard a «s'està omplint el disc»: et diu en quin subdirectori hi ha el problema, i repetint-la un nivell més avall arribes al culpable en pocs passos. La canonada | i sort s'estudien al Mòdul 2; aquí ho fem servir com a recepta.

10.4 df: quant queda al disc

df (disk free) informa de les particions muntades i la seva ocupació.

df -h
S.fitxers      Mida  Usat  Disp Ús%  Muntat a
/dev/sda1      100G   72G   23G  76% /
/dev/sdb1      500G  410G   65G  87% /srv
tmpfs          3,9G  1,2M  3,9G   1% /run

La diferència entre totes dues ordres sol confondre:

Ordre Punt de vista Pregunta que respon
du Des dels fitxers cap amunt «Quant ocupa aquesta carpeta
df Des del sistema de fitxers «Quant queda al disc

I una anomalia clàssica que convé conèixer: si df diu que el disc és ple però du no troba les dades, gairebé sempre és perquè un procés manté obert un fitxer ja esborrat. L'espai no s'allibera fins que aquest procés acaba. És exactament el que passa quan algú esborra acces.log sense reiniciar el servei que l'escriu. La gestió de processos es veu a 05-02.

També val la pena df -i, que mostra els inodes lliures: un disc amb espai però sense inodes disponibles (milions de fitxers diminuts) també dona errors de «no queda espai».

  1. Recorregut guiat per la infraestructura de Veloz Envíos

Posem-ho tot junt en una sessió real de reconeixement sobre srv-veloz-01. És el teu primer dia i vols entendre el terreny.

Pas 1: Situar-te

whoami
pwd
joan
/home/joan

Pas 2: Explorar els registres

cd /var/log/veloz
ls -lht
total 47M
-rw-r--r-- 1 veloz    veloz 6,0M ago  3 10:15 app.log
-rw-r--r-- 1 www-data adm    28M ago  3 10:14 acces.log
-rw-r--r-- 1 veloz    veloz 1,3M ago  3 09:02 veloz-api.log
-rw-r--r-- 1 www-data adm   9,4M ago  2 23:59 acces.log.1
-rw-r--r-- 1 veloz    veloz 2,1M ago  2 23:59 app.log.1

Ja saps molt amb aquesta sola pantalla:

  • app.log i acces.log s'estan escrivint ara mateix (data d'avui, hora recent): el servei és viu.
  • Els fitxers .1 són rotacions del dia anterior, tallades a les 23:59.
  • acces.log pesa 28 MB, quatre vegades més que app.log: si cal vigilar l'espai, aquest és el candidat.
  • acces.log pertany a www-data i app.log a veloz: són dos serveis diferents, amb identitats diferents. Com a joan, els podràs llegir (el bloc d'«altres» té r) però no pas escriure-hi.

Pas 3: Comprovar el tipus abans d'obrir

file acces.log acces.log.1
acces.log:   ASCII text, with very long lines
acces.log.1: gzip compressed data, from Unix, original size 84213760

Confirmat: el rotat està comprimit tot i no portar .gz. Bona dada abans de mirar de llegir-lo.

Pas 4: Visitar les dades de negoci

pushd /srv/veloz/dades
ls -lh
/srv/veloz/dades /var/log/veloz
total 12M
-rw-rw-r-- 1 veloz veloz  11M ago  3 06:00 enviaments.csv
-rw-rw-r-- 1 veloz veloz 512K jul 31 06:00 enviaments-2026-07.csv
drwxrwxr-x 2 veloz veloz 4,0K jul  1 06:00 historic

S'hi aprecia un patró de treball: hi ha un fitxer actiu, un de mensual i un directori historic. L'hora 06:00 suggereix un procés automàtic que s'executa de matinada.

stat -c 'Modificat: %y | Mida: %s bytes' enviaments.csv
Modificat: 2026-08-03 06:00:12.000000000 +0200 | Mida: 11534336 bytes

Pas 5: Comprovar l'espai

du -sh /var/log/veloz /srv/veloz/dades
df -h /srv
47M	/var/log/veloz
12M	/srv/veloz/dades
S.fitxers      Mida  Usat  Disp Ús%  Muntat a
/dev/sdb1      500G  410G   65G  87% /srv

/srv al 87 %: encara no és crític, però és justament el tipus de mètrica que el nostre futur script d'informe ha de vigilar. Anota-t'ho mentalment, perquè serà un dels requisits del Mòdul 9.

Pas 6: Tornar a casa

popd
cd ~/veloz-ops
tree
/var/log/veloz
/home/joan/veloz-ops
├── bin
├── etc
├── lib
└── logs

5 directories, 0 files

De moment és buit. A partir del Mòdul 3 començarem a omplir-lo.

Alternativa sense tree

Si tree no està instal·lat al servidor:

ls -R ~/veloz-ops
/home/joan/veloz-ops:
bin  etc  lib  logs

/home/joan/veloz-ops/bin:

/home/joan/veloz-ops/etc:

/home/joan/veloz-ops/lib:

/home/joan/veloz-ops/logs:

Menys bonic, però disponible a qualsevol màquina.

Errors Habituals i Consells

  • Confondre /var/log amb ~/veloz-ops/logs. El primer el gestiona el sistema i requereix permisos; el segon és teu. Els nostres scripts escriuran al segon.
  • Executar cd sense comprovar si ha funcionat. Si el directori no existeix, cd falla però tu continues on eres; en un script, les ordres següents actuaran sobre el directori equivocat. Es resol amb cd /ruta || exit, que veurem a 03-04.
  • Fer servir rutes relatives als scripts. Un script llançat per cron no arrenca al directori que t'imagines. Rutes absolutes sempre.
  • Oblidar que -h no significa el mateix a totes les ordres. A ls, du i df és «human readable»; a moltes altres és «help». Davant del dubte, man (lliçó 01-05).
  • Fer cat a un fitxer enorme o binari. Bloqueja la terminal i pot deixar-la amb caràcters corromputs (s'arregla amb reset). Fes servir file abans i less per llegir.
  • Cercar ocults amb ls a seques. A Linux n'hi ha prou amb un punt inicial per ocultar un fitxer. Fes servir ls -a quan alguna cosa «no apareix».
  • Executar tree / o du / sense límit. Triga moltíssim i satura la terminal. Fes servir -L o --max-depth.
  • Consell: fes servir el tabulador de manera sistemàtica. A més d'escriure menys, valida que la ruta existeix mentre l'escrius: si no completa, és que t'has equivocat.
  • Consell: ls -lt i du -h --max-depth=1 | sort -hr són les dues ordres de diagnòstic que més vegades salven una guàrdia nocturna. Memoritza-les.

Exercicis

Exercici 1: Resoldre rutes mentalment

Ets a /var/log/veloz. Sense executar res, indica a quina ruta absoluta equival cada expressió:

  1. ..
  2. ../../..
  3. ./app.log
  4. ../nginx/error.log
  5. ~/veloz-ops/bin
  6. ../../../srv/veloz/dades/enviaments.csv

Exercici 2: Reconeixement d'un servidor

Fes a la teva màquina (adaptant les rutes si no tens l'estructura de Veloz Envíos) aquesta seqüència de reconeixement, i explica què et diu cada resultat:

  1. Esbrina el teu directori actual.
  2. Llista /var/log en format llarg, amb mides llegibles i ordenat per data de modificació descendent.
  3. Identifica quin és el fitxer o directori més gran de /var/log.
  4. Esbrina el percentatge d'ocupació de la partició on és /var.
  5. Determina de quin tipus és el fitxer /etc/passwd sense obrir-lo.

Exercici 3: Navegació amb pila

Fent servir exclusivament pushd, popd i dirs, escriu la seqüència d'ordres que:

  1. Partint de ~, visiti /var/log, després /etc i després /tmp, apilant cadascun.
  2. Mostri la pila numerada.
  3. Torni a /etc desfent un sol nivell.
  4. Retorni finalment a ~.

Indica en quin directori quedes després de cada pas.

Solucions

Solució a l'Exercici 1

Expressió Ruta absoluta Raonament
.. /var/log Puja un nivell des de /var/log/veloz
../../.. / Tres nivells: logvar/. No es pot pujar més enllà de l'arrel
./app.log /var/log/veloz/app.log . és el directori actual
../nginx/error.log /var/log/nginx/error.log Puja a /var/log i baixa per nginx
~/veloz-ops/bin /home/joan/veloz-ops/bin ~ no depèn d'on siguis
../../../srv/veloz/dades/enviaments.csv /srv/veloz/dades/enviaments.csv Puja a / i baixa per srv

Detall del tercer cas: / és el sostre. cd ../../../../.. des de qualsevol lloc et deixa a /, sense error.

Solució a l'Exercici 2

# 1
pwd

# 2
ls -lht /var/log

# 3
du -h --max-depth=1 /var/log | sort -hr | head -3

# 4
df -h /var

# 5
file /etc/passwd

Sortida i lectura de cada punt:

/home/joan

Ets a la teva carpeta personal.

total 312M
drwxr-x--- 2 root adm    4,0K ago  3 10:16 veloz
-rw-r----- 1 syslog adm   18M ago  3 10:16 syslog
drwxr-xr-x 2 root root   4,0K ago  3 00:00 nginx

El primer és el modificat més recentment: els serveis que estan escrivint ara. És el punt de partida per investigar una incidència en curs.

312M	/var/log
47M	/var/log/veloz
28M	/var/log/nginx

La primera línia és el total del directori consultat; a partir d'aquí, veloz és el consumidor més gran. Nota: --max-depth=1 inclou el mateix directori, per això /var/log apareix al capdavant.

S.fitxers      Mida  Usat  Disp Ús%  Muntat a
/dev/sda1      100G   72G   23G  76% /

/var no té partició pròpia: penja de /, que és al 76 %. És una dada important, perquè significa que un registre desbocat pot omplir tot el sistema, no només /var.

/etc/passwd: ASCII text

És text pla, així que es pot llegir amb cat o less sense cap risc. Tot i el nom, no conté contrasenyes (són a /etc/shadow).

Solució a l'Exercici 3

cd ~
pushd /var/log     # -> /var/log      | pila: /var/log ~
pushd /etc         # -> /etc          | pila: /etc /var/log ~
pushd /tmp         # -> /tmp          | pila: /tmp /etc /var/log ~
dirs -v
popd               # -> /etc          | pila: /etc /var/log ~
popd; popd         # -> ~             | pila: ~

Sortida de dirs -v al pas 2:

 0  /tmp
 1  /etc
 2  /var/log
 3  ~

Recorregut: ~/var/log/etc/tmp → (popd) /etc → (popd) /var/log → (popd) ~.

Observa que cada pushd apila el directori on eres i et porta al nou, mentre que popd descarta el cim i et situa al següent. Una alternativa al darrer pas seria cd ~ directament, però l'exercici demanava fer servir només la pila. Si volguessis saltar directament a /var/log des de /tmp sense desapilar, pushd +2 faria rotar la pila fins a aquesta posició.

Conclusió

Ja et mous pel sistema amb criteri. Saps descompondre una ordre en programa, opcions i arguments; coneixes el mapa del FHS i què guarda cada directori clau; distingeixes rutes absolutes de relatives i saps quan fer servir cadascuna; manejes pwd, cd, ls amb les seves opcions decisives, tree i la pila de pushd/popd; i saps interpretar ls -l línia a línia i inspeccionar fitxers amb file, stat, du i df abans de tocar-los. Sobretot, has fet el teu primer reconeixement real de srv-veloz-01 i ja saps on viu cada peça de Veloz Envíos.

Fins ara has estat fent servir el shell. A la lliçó següent, Entenent el Shell, n'obrirem la caixa: què passa exactament entre que prems Enter i apareix el resultat, per què cd no pot ser un programa extern, com cerca Bash les ordres al PATH, què és un subshell i per què una variable definida dins d'un desapareix en sortir-ne. Entendre aquest mecanisme és el que separa qui copia ordres de qui sap què està fent.

Curs de Programació en Bash

Mòdul 1: Introducció a Bash

Mòdul 2: Ordres Bàsiques de Bash

Mòdul 3: Fonaments de Scripting

Mòdul 4: Scripting Intermedi

Mòdul 5: Tècniques Avançades de Scripting

Mòdul 6: Treballar amb Eines Externes

Mòdul 7: Automatització i Programació

Mòdul 8: Bones Pràctiques i Optimització

Mòdul 9: Projectes del Món Real

© Copyright 2026. Tots els drets reservats