LINUX

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:

$ head -n -20 /var/log/syslog

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:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar