Comando head de Linux con ejemplos
El comando head se utiliza para imprimir las primeras líneas de un archivo de texto. De forma predeterminada, el comando head imprime las primeras 10 líneas de cada archivo en la salida estándar, que es la pantalla de visualización. Se puede utilizar con otros comandos para proporcionar resultados más específicos del sistema.
En un artículo anterior, aprendimos cómo usar el comando tail y sus diferentes opciones. En este artículo, aprenderemos cómo usar el comando head de Linux para leer las primeras líneas de cualquier archivo de texto y son las opciones más comunes.
1) Uso de cabezal con entrada estándar
Si no se especifica ningún archivo, o cuando el archivo se especifica como -, el comando head lee el flujo de entrada estándar (stdin) en lugar de un archivo. Esto significa que devuelve todo lo escrito desde su teclado. En este ejemplo, ingresaré palabras y luego head mostrará lo que escribí. Después de ingresar, presionaré CTRL + C para salir.
$ head - this this is is an an example example of of head head with no file specified with no file specified
2) Ver las primeras 10 líneas de un archivo
Al especificar un nombre de archivo con encabezado, se imprimen las primeras 10 líneas.
$ head /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command
3) Ver las primeras N líneas de un archivo
Puede especificar el número exacto de líneas que se mostrarán además de las primeras 10. Puede hacerlo utilizando el -n
o --lines
cambie y luego el número de líneas que desea imprimir.
$ head -n11 /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly
4) Visualización de varios archivos
Si se proporcionan varios archivos como argumento, muestra las primeras 10 líneas y precede a cada una de ellas con un encabezado que muestra el nombre del archivo.
$ head /etc/crontab /etc/group ==> /etc/crontab <== # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command ==> /etc/group <== root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,eyramm tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9:
Si no desea imprimir encabezados, puede usar el -q
, --quite
, o --silent
interruptores.
$ head --silent /etc/crontab /etc/group # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,eyramm tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9:
Para imprimir siempre los encabezados, puede dejar el nombre del archivo como está o utilizar el -v
o --verbose
cambiar.
Para mostrar las primeras N líneas de varios archivos, puede usar el siguiente comando.
$ head -3 /etc/group /etc/fuse.conf /etc/passwd ==> /etc/group <== root:x:0: daemon:x:1: bin:x:2: ==> /etc/fuse.conf <== # /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE) # Set the maximum number of FUSE mounts allowed to non-root users. ==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin
Puede usar el comodín * para imprimir líneas de cada archivo cuyo nombre termine con una extensión específica.
$ head -1 -q /etc/*.conf # /etc/adduser.conf: `adduser' configuration. # this file sets defaults for apg if apg is called without parameters # # Documents/brltty.conf. Generated from brltty.conf.in by configure. # This file lists certificates that you wish to use or to ignore to be # This is the main config file for debconf. It tells debconf where to # /etc/deluser.conf: `deluser' configuration. # /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE) [fwupd] # Configuration for getaddrinfo(3). ## This is the default configuration for hdparm for Debian. It is a # The "order" line is only used by old versions of the C library. # # Kernel Image management overrides # include /etc/ld.so.conf.d/*.conf default_driver=pulse # This is the configuration file for libaudit tunables.
5) Imprimir los últimos N bytes de un archivo
Para imprimir los últimos N bytes de un archivo, debe usar el -c
o --bytes
interruptor seguido del número de bytes. Esto imprime los primeros 50 bytes del archivo. También puedes usar
$ head -c 70 /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,eyramm tty:x:5:
Para mostrar otro tamaño que no sean bytes, por ejemplo, kilobytes, puede especificar kB
, MB
, M
, etc
$ head -c 2kB /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,eyramm tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20: fax:x:21: voice:x:22:
Alternativamente, puede usar -c +N
para generar bytes comenzando con el N de cada archivo
$ head -c +50 /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:sy
Para eliminar las últimas N líneas e imprimir todo lo demás, usamos el comando:
6) Usar cabezal con tubos
El comando principal se puede canalizar hacia o desde otros comandos. Este comando enumera el contenido de un archivo de registro, lo canaliza hacia el encabezado para mostrar las primeras 5 líneas con un encabezado y luego el comando de clasificación muestra los resultados en orden inverso.
$ cat /var/log/dpkg.log | head -n 5 -v | sort -r ==> standard input <== 2017-02-15 20:18:59 status unpacked base-passwd:amd64 3.5.39 2017-02-15 20:18:59 status unpacked base-passwd:amd64 3.5.39 2017-02-15 20:18:59 status half-installed base-passwd:amd64 3.5.39 2017-02-15 20:18:59 startup archives install 2017-02-15 20:18:59 install base-passwd:amd64 <none> 3.5.39
El siguiente ejemplo imprime una parte del archivo bootstrap.log, es decir, desde la décima línea hasta la vigésima línea. Esto significa el -n20
El interruptor imprime las primeras 20 líneas mientras el -n10
switch imprime las últimas 10 de las 20 líneas iniciales.
$ head -n20 /var/log/bootstrap.log | tail -n 10 dpkg: warning: parsing file '/var/lib/dpkg/status' near line 4 package 'dpkg': missing maintainer dpkg: warning: parsing file '/var/lib/dpkg/status' near line 4 package 'dpkg': missing architecture Selecting previously unselected package base-passwd. (Reading database ... 0 files and directories currently installed.) Preparing to unpack .../base-passwd_3.5.39_amd64.deb ... Unpacking base-passwd (3.5.39) ... dpkg: base-passwd: dependency problems, but configuring anyway as you requested: base-passwd depends on libc6 (>= 2.8); however:
Ahora debería comprender cómo funcionan el comando head y sus argumentos al mostrar las primeras líneas de un archivo. Funciona exactamente de manera opuesta a tail y se puede usar con otros comandos también usando tuberías. Puedes referir head command man pages para más información.
Leer también: