head
Muestra las primeras líneas de un archivo.
Imprime solo el principio de un archivo: por defecto las primeras 10 líneas. Lo usas para echarle un vistazo rápido a un archivo largo o a un log, sin abrirlo entero y sin que la terminal se te llene de texto.
head [opciones] [ARCHIVO...]Despiece
6 ejemplosVer las primeras 10 líneas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | head | Comando | El comando que muestra el principio de un archivo. |
| 2 | notas.txt | Argumento | El archivo que quieres revisar. |
Aparecen las primeras 10 líneas de notas.txt. Si el archivo tiene menos, se muestran todas y ya.
Ver las primeras 20 líneas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | head | Comando | El comando que muestra el principio de un archivo. |
| 2 | -n | Opción | Lines: dice cuántas líneas quieres. |
| 3 | 20 | Valor | La cantidad de líneas, en este caso 20 en vez de las 10 de siempre. |
| 4 | notas.txt | Argumento | El archivo que quieres revisar. |
Salen las primeras 20 líneas. También funciona la forma corta head -20 notas.txt, que es lo mismo.
Ver la firma de una imagen
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | head | Comando | El comando que muestra el principio de un archivo. |
| 2 | -c | Opción | Bytes: cuenta en bytes en vez de en líneas. Útil con archivos que no son de texto. |
| 3 | 8 | Valor | Los primeros 8 bytes, que en un PNG son la firma del formato. |
| 4 | foto.png | Argumento | El archivo binario del que quieres ver el arranque. |
| 5 | | | Operador | Pipe: manda esos bytes a od en vez de soltarlos en la terminal. |
| 6 | od | Comando | Muestra los bytes de forma legible. |
| 7 | -c | Opción | Enseña cada byte como carácter o como código de escape. |
Sale algo como 211 P N G \r \n 032 \n. Si ves las letras PNG, el archivo sí es una imagen PNG aunque tenga otra extensión.
Ver varios archivos con su nombre arriba
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | head | Comando | El comando que muestra el principio de un archivo. |
| 2 | -n | Opción | Lines: dice cuántas líneas de cada archivo. |
| 3 | 2 | Valor | Dos líneas de cada archivo. |
| 4 | a.txt | Argumento | El primer archivo. |
| 5 | b.txt | Argumento | El segundo archivo. |
Antes de cada bloque sale una etiqueta con el nombre, como ==> a.txt <==. Así sabes de qué archivo es cada pedazo. Con -q quitas esas etiquetas.
Ver todo menos las últimas líneas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | head | Comando | El comando que muestra el principio de un archivo. |
| 2 | -n | Opción | Lines: también acepta números negativos, que cambian el significado. |
| 3 | -3 | Valor | El signo menos indica que quitas 3 líneas, y son del final. |
| 4 | lista.txt | Argumento | El archivo del que quieres quitar las últimas líneas. |
Muestra el archivo completo menos las 3 últimas líneas. Sirve para comparar contra una lista completa o para quitar el pie de página que le ponen a los CSV al exportarlos.
Ver las primeras líneas de la salida de otro comando
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | ps | Comando | Lista los procesos que están corriendo. |
| 2 | aux | Opción | Muestra todos los procesos con columnas legibles. |
| 3 | | | Operador | Pipe: manda la salida de ps a la entrada de head. |
| 4 | head | Comando | El comando que muestra el principio de un archivo, aquí de lo que le llegue por el pipe. |
| 5 | -n | Opción | Lines: cuántas líneas tomar. |
| 6 | 5 | Valor | Cinco líneas: la primera es el encabezado de columnas y las siguientes son procesos. |
Ves el encabezado de columnas y los primeros 4 procesos, sin llenar la pantalla con la lista completa.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -n--lines=NÚMERO | Muestra las primeras NÚMERO líneas en vez de 10. Con número negativo, como -n -3, quita las últimas 3 líneas. |
| -c--bytes=NÚMERO | Muestra los primeros NÚMERO bytes en vez de líneas. Sirve sobre todo con archivos binarios. |
| -q--quiet | No pone el nombre del archivo arriba cuando le pasas más de uno. También existe como --silent. |
| -v--verbose | Siempre pone el nombre del archivo arriba, aunque le pases un solo archivo. |
| -z--zero-terminated | Toma el carácter NUL como fin de línea en vez del salto de línea. Para archivos que no usan \n para separarlas. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Escribir head -n -20 esperando ver las últimas 20 líneas. | El número negativo en head quita líneas del final: head -n -20 muestra todo menos las últimas 20. Para ver el final de un archivo usa tail -n 20. |
| Contar bytes como líneas y extrañar que head -c 100 corte a media palabra. | -n cuenta líneas completas y -c cuenta bytes. Un byte no es siempre un carácter: los acentos y los emojis ocupan más de un byte. Para leer texto usa -n. |
| head -n con un valor que no es número, como head -n notas.txt. | head responde head: invalid number of lines: 'notas.txt'. El número va después de -n y antes del nombre del archivo. |
| Pasarle una carpeta a head esperando que liste lo que tiene adentro. | head: error reading 'fotos': Is a directory. head solo lee archivos; para ver el contenido de una carpeta usa ls fotos. |
Preguntas frecuentes
- ¿Cómo veo las primeras 10 líneas de un archivo?
- Con head archivo. Por defecto imprime 10 líneas. Para cambiar la cantidad usa -n, por ejemplo head -n 25 notas.txt para las primeras 25.
- ¿Cuál es la diferencia entre head y tail?
- head muestra el principio del archivo y tail el final. Los dos usan 10 líneas por omisión, así que head -n 5 te da el encabezado de un archivo y tail -n 5 las últimas cinco.
- ¿Cómo quito la primera línea de un archivo?
- head no puede empezar a leer en la línea 2, pero tail sí: tail -n +2 archivo salta la primera línea y te muestra el resto. Es la forma rápida de quitarle el encabezado a un CSV.
- ¿Qué significa head -c 100?
- Muestra los primeros 100 bytes del archivo en vez de las primeras 10 líneas. Se usa sobre todo con binarios, como una imagen o un archivo comprimido, para ver su encabezado.
- ¿Cómo veo varios archivos a la vez o la salida de otro comando?
- Pásale todos los archivos a head: head -n 2 a.txt b.txt, y antes de cada bloque sale una etiqueta con el nombre del archivo para que no se mezclen; con -q las quita. También funciona al final de un pipe, como ps aux | head -n 5, porque no necesita nombre de archivo cuando la entrada le llega por el pipe.