Veure el contingut d'un fitxer a Linux

La comanda tac a Linux: mostrar un fitxer de l’última línia a la primera



La comanda tac mostra un fitxer de l’última línia a la primera. El nom és cat al revés, i fa just el contrari que cat. És útil sobretot amb fitxers de registre, on les entrades més noves són al final: amb tac les tens a dalt de tot.

Sintaxi

tac [opcions] [fitxer...]

Si no li passes cap fitxer, llegeix de l’entrada estàndard. Forma part de les GNU coreutils.

Opcions

OpcióQuè fa
-s cadenaFa servir cadena com a separador en lloc del salt de línia
-rInterpreta el separador com a expressió regular
-bPosa el separador davant de cada tros en lloc de darrere

Exemples

Invertir un fitxer

$ cat registre.log
2026-10-01 inici
2026-10-02 error disc
2026-10-03 aturada
$ tac registre.log
2026-10-03 aturada
2026-10-02 error disc
2026-10-01 inici

Trobar l’últim error d’un registre

grep -m1 s’atura a la primera coincidència. Si li passes el fitxer invertit, aquesta és la més recent:

$ tac registre.log | grep -m1 error
2026-10-02 error disc

En un registre gran, això és molt més ràpid que fer grep de tot el fitxer i quedar-te amb l’última línia, perquè tac llegeix el fitxer des del final i grep s’atura de seguida.

Els registres de systemd

Els registres del sistema que gestiona systemd no són fitxers de text, i no els pots llegir amb tac. Per veure’ls del més nou al més antic, journalctl té la seva pròpia opció:

journalctl -r

Diversos fitxers

Amb més d’un fitxer, tac inverteix cadascun per separat i els mostra en l’ordre en què els has escrit. No inverteix el conjunt:

$ printf 'a\nb\n' > p1; printf 'c\nd\n' > p2
$ tac p1 p2
b
a
d
c

Si vols el conjunt invertit, uneix-los primer: cat p1 p2 | tac.

Un separador diferent

Amb -s pots invertir trossos separats per qualsevol cadena:

$ printf 'u,dos,tres,' | tac -s ,
tres,dos,u,

tac o tail?

Per veure les últimes línies d’un fitxer, la comanda adequada és tail, que les mostra en l’ordre original. tac fitxer | head -n 10 també et dona les 10 últimes, però de baix a dalt. Fes servir tac quan vulguis justament aquest ordre invers.

A la versió anterior d’aquest article hi havia un exemple per eliminar línies amb tac | grep -v | tac: el resultat és el mateix que grep -v sol, de manera que els dos tac sobren.

Comandes relacionades