Comandos Head y Tail en Linux explicados con ejemplos
Esta guía muestra los usos típicos de los comandos head y tail en Linux para obtener una parte del texto a través de ejemplos.
Es común obtener una parte del texto de los archivos de entrada en Linux. Sin embargo, en ocasiones, nos interesa visualizar sólo unas pocas líneas de un archivo. Linux nos proporciona los comandos head
y tail
para imprimir solo las líneas que nos interesan.
Los comandos head
y tail
de Linux son muy similares. De forma predeterminada, están instalados en todas las distribuciones de Linux. Primero comprendamos qué son y para qué se utilizan.
En resumen, como sus nombres lo implican, el comando head
imprime líneas desde el principio de un archivo, y el comando tail
imprime líneas desde el final de los archivos. Finalmente, ambos comandos escriben el resultado en la salida estándar.
Ahora, aprendamos cómo usarlos a través de ejemplos.
Comando principal en Linux
La sintaxis del comando head
es bastante sencilla:
head [OPTIONS] FILES
De forma predeterminada, sin ninguna opción, el comando head
mostrará las primeras diez líneas del archivo. Así como así.
head /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin
Por supuesto, hay opciones que podemos definir mientras ejecutamos el comando para obtener el resultado personalizado.
Genere un número específico de líneas usando el comando head
-n
Por ejemplo, el siguiente comando mostrará las primeras tres líneas del archivo /etc/passwd
.
head -n 3 /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
Genere un número específico de bytes usando el comando head
-c
Por ejemplo, el siguiente comando mostrará los primeros 8 bytes del archivo /etc/passwd
.
head -c 8 /etc/passwd
root:x:0
Generar múltiples archivos usando el comando head
Por supuesto, el comando head
también puede manejar varios archivos. Por ejemplo, el siguiente comando mostrará las primeras tres líneas de los archivos /etc/passwd
y /etc/group
.
head -n 3 /etc/passwd /etc/group
==> /etc/passwd <==
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
==> /etc/group <==
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:
-q
head -q -n 3 /etc/passwd /etc/group
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:
Cómo utilizar el comando head con tuberías
El comando head
también se puede canalizar a otros comandos. Entonces, en el siguiente ejemplo, la salida del comando ls
se canaliza a head
para mostrar los cinco archivos o carpetas modificados más recientemente en /etc directorio.
ls -t /etc | head -n 5
ld.so.cache
resolv.conf
systemd
libreoffice
profile.d
A estas alturas, deberías entender bien cómo utilizar el comando head
de Linux. Ahora, echemos un vistazo al comando tail
.
Comando de cola en Linux
El comando tail
en Linux es el mismo que el comando head
. Sin embargo, a diferencia del comando head
, el comando tail
imprime las últimas líneas de un archivo específico (10 líneas de forma predeterminada).
La sintaxis básica del comando tail
es:
tail [OPTIONS] FILES
Por ejemplo, el siguiente comando imprimirá las últimas diez líneas del archivo /etc/locale.gen
.
tail /etc/locale.gen
#zh_HK.UTF-8 UTF-8
#zh_HK BIG5-HKSCS
#zh_SG.UTF-8 UTF-8
#zh_SG.GBK GBK
#zh_SG GB2312
#zh_TW.EUC-TW EUC-TW
#zh_TW.UTF-8 UTF-8
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1
Genere un número específico de líneas usando el comando tail
-n
tail -n 3 /etc/locale.gen
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1
Cómo utilizar el comando tail con tuberías
Anteriormente, canalizamos la salida de head
a ls
. De manera similar, también podemos canalizar la salida de otros comandos a tail
.
Por ejemplo, para identificar los cinco archivos o carpetas en el directorio /etc
con los tiempos de modificación más antiguos y canalizar la salida al comando tail
, escriba:
ls -t /etc/ | tail -n 5
wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.conf
Observe un archivo en busca de cambios usando el comando tail
Hay una característica más poderosa y ampliamente utilizada en el comando tail
. De esto se trata.
A veces, el archivo de entrada que queremos verificar está cambiando. Por ejemplo, una aplicación en ejecución puede agregar su salida a un archivo de registro.
-f
Entonces, esta podría ser la opción más práctica y comúnmente utilizada para el comando tail
.
Por ejemplo, puede ver nuevas líneas que se agregan al final de un archivo de registro de Nginx a medida que se agregan, como esta:
tail -f /var/log/nginx/access.log
172.16.1.122 - - [08/Apr/2021:08:15:32 +0000] "POST /wp-admin/admin-ajax.php HTTP/1.1" 200 109 "https://linuxwizard.com/wp-admin/post.php?post=18254&action=edit" "Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
172.16.1.122 - - [08/Apr/2021:08:19:27 +0000] "GET /feed/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1"
172.16.1.122 - - [08/Apr/2021:08:19:49 +0000] "HEAD /feed/ HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
A medida que se agrega cada nueva entrada de registro al archivo de registro, tail
actualizará su visualización en la ventana del terminal.
Cómo utilizar los comandos head y tail juntos en Linux
Como los comandos tail
y head
imprimen diferentes partes de los archivos, podemos combinar estos dos para imprimir un filtrado avanzado del contenido del archivo.
Por ejemplo, si desea leer el contenido desde la mitad de cualquier archivo, debe usar ambos comandos juntos.
Digamos que queremos pasar de la quinta a la décima línea del archivo /etc/passwd
. Al principio, el comando head
recuperará las primeras diez líneas, y luego el comando tail
recuperará las últimas cinco líneas de la salida del head
> comando.
head -n 10 /etc/passwd | tail -n 5
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin
Conclusión
En este artículo, aprendimos los usos típicos de ambos comandos a través de ejemplos. Como puede ver, los comandos tail
y head
son útiles para controlar qué contenido del archivo se imprimirá en la pantalla.
De hecho, son comandos flexibles que mejoran significativamente la gestión de tus archivos. Entonces, pruébalos.
¿Necesitas más detalles? Consulte las páginas de manual de comandos head
y tail
.