El comando head se usa 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 usar con otros comandos para proporcionar resultados más específicos del sistema.
En un artículo anterior, aprendimos a usar el comando tail y sus diferentes opciones. En este artículo, aprenderemos cómo usar el comando de cabeza de Linux para leer las primeras líneas de cualquier archivo de texto y son las opciones más comunes.
1) Usar cabezal con entrada estándar
Si no se especifica ningún archivo, o cuando el archivo se especifica como -, el comando principal lee desde el flujo de entrada estándar (stdin) en lugar de un archivo. Esto significa que arroja 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
Especificar un nombre de archivo con encabezado imprime 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 usando -n
o --lines
cambiar 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) Mostrar varios archivos
Si se dan varios archivos como argumento, muestra las primeras 10 líneas y precede a cada una 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 -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 usar -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]
# Configuración para getaddrinfo(3).## Esta es la configuración predeterminada para hdparm para Debian. Es un # La línea de "pedido" solo la usan las versiones antiguas de la biblioteca C. ## La administración de imágenes del kernel anula #include /etc/ld.so.conf.d/*.confdefault_driver=pulse# Este es el archivo de configuración para parámetros ajustables de libaudit.
5) Imprimir los últimos N bytes de un archivo
Para imprimir los últimos N bytes de un archivo, debe usar -c
o --bytes
modificador 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 enésimo 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:
$ head -n -20 /var/log/syslog
6) Uso de cabeza 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 a head para mostrar las primeras 5 líneas con un encabezado y luego el comando sort 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 línea 10 hasta la línea 20. Esto significa que el -n20
switch imprime las primeras 20 líneas mientras que 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 la cola y se puede usar con otros comandos y también con tuberías. Puede consultar las páginas man de los comandos principales para obtener más información.
Leer también:
- Comando de Linux more explicado con ejemplos