Veure el contingut d'un fitxer a Linux

La comanda head a Linux: mostrar les primeres línies d’un fitxer



La comanda head mostra les primeres línies d’un fitxer (per defecte, 10). Serveix per fer una ullada ràpida a un fitxer sense obrir-lo sencer (per exemple, la capçalera d’un CSV) i, sobretot, per quedar-te només amb els primers resultats d’una altra comanda. És la parella de tail, que mostra les últimes.

Sintaxi

head [opcions] [fitxer...]

Si no li passes cap fitxer, llegeix de l’entrada estàndard, que és com el faràs servir més sovint: al final d’una canonada.

Opcions

OpcióQuè fa
-n NMostra les primeres N línies (també s’accepta la forma curta -N, per exemple -5)
-n -NMostra-ho tot menys les últimes N línies
-c NMostra els primers N bytes (admet sufixos: 1K, 1M…)
-qAmb diversos fitxers, no escriu la capçalera amb el nom de cada fitxer
-vEscriu sempre la capçalera, encara que només hi hagi un fitxer

Exemples

Les 10 primeres línies d’un fitxer:

head /etc/passwd

Les 3 primeres:

$ seq 1 12 > num.txt
$ head -n 3 num.txt
1
2
3

Tot menys les 9 últimes (amb aquest fitxer de 12 línies, el resultat és el mateix):

$ head -n -9 num.txt
1
2
3

Diversos fitxers a la vegada. head separa cada un amb una capçalera:

$ head -n 2 fitxer1.txt fitxer2.txt
==> fitxer1.txt <==
primera línia
segona línia

==> fitxer2.txt <==
tercera línia

Al final d’una canonada

Els 5 fitxers modificats més recentment d’un directori:

ls -lt /etc | head -n 6

(La primera línia de ls -l és el total, per això en demanem 6.)

Els 10 processos que consumeixen més memòria:

ps aux --sort=-%mem | head -n 11

Les 5 primeres línies d’un registre que contenen error:

grep error registre.log | head -n 5

Aquí grep -m 5 error registre.log faria el mateix i s’aturaria abans de llegir tot el fitxer.

Un rang de línies

Combinat amb tail, pots extreure les línies de la 5 a la 7:

$ head -n 7 num.txt | tail -n 3
5
6
7

El mateix amb sed: sed -n '5,7p' num.txt.

Llegir uns quants bytes

Per veure el començament d’un fitxer binari (per exemple, per identificar-ne el tipus):

head -c 16 imatge.png | hexdump -C

O per generar una contrasenya aleatòria:

head -c 18 /dev/urandom | base64

Compte amb…

  • head -n -N no funciona igual a tot arreu. Els nombres negatius són una extensió de GNU: a macOS i als BSD, head no els accepta.
  • Missatges Broken pipe. Quan head ja té les línies que volia, tanca la canonada, i el programa d’abans pot acabar amb un error d’escriptura. És normal i no indica cap problema.

Comandes relacionades