El comando head de #GNU

Echemos un vistazo al uso del comando head, una de las herramientas del sistema GNU

Las herramientas coreutils del sistema GNU, son las herramientas básicas de nuestro sistema GNU con kernel Linux a la hora de gestionarlo desde la línea de comandos.

En esta ocasión echaremos un vistazo al comando head, un comando sencillo y que nos puede ser muy útil cuando estamos trabajando en la terminal o para usarlo en algún script.

El comando head es un comando sencillo de utilizar y con pocas opciones que podremos aprender sin mucha dificultad. Básicamente lo que hace es mostrar las primeras 10 líneas (de manera predeterminada) de un archivo o de varios.

head archivo.txt

De esta manera, podremos ver una parte del archivo sin necesidad de abrirlo en un editor, si sólo queremos ver el contenido y no modificarlo.

De manera predeterminada muestra las primeras 10 líneas del archivo, pero podemos modificarlo para mostrar más líneas o menos. Podemos especificar los números de línea con la opción -n <num>

head -n 15 archivo.log

Esto hará que se muestren 15 líneas del archivo especificado. Podemos poner el número que queramos. Si especificamos el número precedido de un guion esto hará algo totalmente distinto. -n -<num>

head -n -15 artículo.md

Esto mostrará todo el contenido del archivo menos las 15 últimas líneas (las especificadas en el comando en este ejemplo) del archivo. Como veis es una diferencia de funcionamiento sustancial.

También podemos especificar no las líneas que queremos que muestre, si no los caracteres a mostrar (o bytes) con la opción -c (sí, los espacios en blanco y los saltos de línea también son caracteres)

head -c 20 artículo.md

Igual que en el caso anterior, si anteponemos un – antes del número, imprimirá todo el archivo menos los últimos caracteres especificados.

También podemos especificar un tamaño de información (bytes, kilos, megas, etc) si lo especificamos añadiendo al número un sufijo (b, K, M, etc)

Como he dicho al comienzo pueden pasarse al comando varios archivos y de todos mostrará la parte indicada. Cuando se especifican varios archivos, el comando muestra una cabecera con el nombre del archivo antes de cada texto del archivo correspondiente.

$ head -n 2 artículo.md Unamuno.md
==> archivo.md <==
lorem ipsum
dolor sit amet

==> Unamuno.md <==
Vencer no es convencer
ni conquistar es convertir

Pero si no queremos que se muestre esa línea que muestra el nombre del archivo, ya que tenemos un script en el que no necesitamos esa funcionalidad, podemos omitirla con la opción -q (quiet)

head -q archivo1.txt archivo2.txt archivo3.txt 

Lo que mostrará sin solución de continuidad los contenidos de los archivos especificados.

De igual manera, si al especificar solo un archivo, queremos forzar que el comando muestre el nombre del archivo antes del texto podemos hacerlo con la opción -v (verbose)

head -v archivo1.txt

Para concluir, si ejecutamos el comando sin especificar ningún archivo, mostrará el contenido de aquello que vayamos escribiendo en nuestra terminal. No sé qué sentido puede tener esto, pero oye, ahí está…

Quizás a la hora de tomar la entrada de head desde otro comando pueda ser útil.


Y eso sería básicamente todo lo relacionado con el comando head. Como siempre, puedes completar esta información con la ayuda del comando en tu terminal mediante cualquiera de estas opciones:

  • man head
  • info head
  • head –help

¿Te gustan esta serie de entradas sobre comandos GNU? ¿Ya conocías esta herramienta? ¿La usas en tu día a día o tus scripts? Comparte tu modo de uso en los comentarios.

7 comentarios sobre “El comando head de #GNU

  1. Has pillado un filón al ver el interés en ver estos comandos. XDDD

    Head ya me sonaba (aunque no los parámetros excepto el -n). De hecho tiene un opuesto que es tail. Aunque hace mucho que no los uso.

    Para ver archivos desde consola suelo usar cat que a veces lo uso así:

    cat | more

    de esa forma se para en pantalla y hasta que no le das al enter no baja una línea más (lo que hace less vaya).

  2. ¡Excelente serie de entradas sobre comandos GNU, conocía el comando solo con la opción -n. Muchas gracias pr la información. Continúo atento a las siguientes entregas. Saludos!

  3. Hola, hace mucho aprendí el uso de head -3 fichero, sin poner -n 3, hoy al leer el artículo he descubierto que se puede poner -n delante. Por curiosidad he mirado el manual y no viene lo de no poner -n . ¿será un bug?

    1. Hola!
      Si no especificas un -n delante del número, el comando tomará el número como un archivo y te dará un error porque tratará de abrir los dos archivos:

      $ head 2 archivo

      head: no se puede abrir ‘2’ para lectura: No such file or directory
      ==> archivo <==
      hola
      hola
      hola1
      hola1
      hola1
      hola1
      hola1
      hola2
      hola2
      hola2

      Eso es por lo menos lo que me pasa a mí…

      Saludos y gracias por comentar…

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.