Obtener una parte del texto de los archivos de entrada en Linux es una operación común. Sin embargo, a veces nos interesa ver solo unas pocas líneas de un archivo. Linux nos proporciona los comandos head y tail para imprimir solo las líneas que nos interesan.
Índice
- Comando principal en Linux
- Generar un número específico de líneas usando el comando head
- Generar un número específico de bytes usando el comando head
- Generar múltiples archivos usando el comando head
- Cómo usar el comando head con tuberías
- Comando de cola en Linux
- Generar un número específico de líneas usando el comando tail
- Cómo usar el comando tail con tuberías
- Observe cambios en un archivo usando el comando tail
- Cómo usar los comandos head and tail juntos en Linux
- Conclusión
Linux head
y tail
Los comandos son muy similares. Están instalados por defecto en todas las distribuciones de Linux. Primero comprendamos qué son y para qué se utilizan.
En resumen, como sus nombres lo indican, el head
El comando imprime líneas desde el principio de un archivo y el tail
El comando imprime líneas desde el final de los archivos. 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 head
el comando es bastante sencillo:
head [OPTIONS] FILES
Por defecto, sin ninguna opción , la head
El comando mostrará las primeras 10 líneas del archivo. Justo 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 la salida personalizada.
Generar un número específico de líneas usando el comando head
Si desea recuperar un número de líneas diferente al predeterminado de 10, entonces -n
La opción se usa junto con un número entero que indica el número de líneas que se recuperarán.
Por ejemplo, el siguiente comando mostrará las primeras 3 líneas de /etc/passwd
archivo.
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
Generar un número específico de bytes usando el comando head
Además de, la head
El comando también puede imprimir el contenido del archivo por byte. Solo pasa el -c
opción al comando. Tenga en cuenta que la nueva línea cuenta como un solo carácter, por lo que si head
imprime una nueva línea, la contará como un byte.
Por ejemplo, el siguiente comando mostrará los primeros 8 bytes de /etc/passwd
archivo.
head -c 8 /etc/passwd
root:x:0
Generar varios archivos usando el comando head
Por supuesto, la head
El comando también puede manejar varios archivos. Por ejemplo, el siguiente comando mostrará las primeras 3 líneas de /etc/passwd
y /etc/group
archivos.
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:
Agregando el -q
La opción del ejemplo anterior eliminará los encabezados que dan nombres de archivo.
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 usar head Command con Pipes
La head
El comando se puede canalizar a otros comandos. En el siguiente ejemplo, la salida de ls
el comando 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ía tener una buena comprensión de cómo usar Linux head
dominio. Ahora, echemos un vistazo a la tail
comando.
Comando de cola en Linux
El comando Tail en Linux es el mismo que head
dominio. A diferencia de la head
comando, sin embargo, el tail
El comando imprime el último número de líneas (10 líneas de forma predeterminada) de un archivo determinado.
La sintaxis básica del comando tail es:
tail [OPTIONS] FILES
Por ejemplo, el siguiente comando imprimirá las últimas 10 líneas de /etc/locale.gen
archivo.
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
Generar un número específico de líneas usando el comando de cola
Similar a la head
comando, también puede imprimir las últimas líneas usando el -n
opción como se muestra a continuación.
tail -n 3 /etc/locale.gen
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1
Cómo usar el comando tail con tuberías
Anteriormente, canalizamos la salida desde head
en ls
. También podemos canalizar la salida de otros comandos en tail
.
Por ejemplo, para identificar los cinco archivos o carpetas en /etc
directorio con los tiempos de modificación más antiguos y canalice la salida a tail
:
ls -t /etc/ | tail -n 5
wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.conf
Observe cambios en un archivo usando el comando tail
Hay una función más poderosa en tail
dominio. A veces, el archivo de entrada que queremos comprobar está cambiando. Por ejemplo, una aplicación en ejecución puede agregar su salida a un archivo de registro. Si ejecutamos el tail
comando con -f
opción en el archivo cambiante, todas las líneas recién agregadas se agregarán a la salida estándar. Esta podría ser, con mucho, la opción más útil y más utilizada para tail
comando.
Por ejemplo, puede ver las nuevas líneas que se agregan al final de un archivo de registro de Nginx, a medida que se agregan, así:
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 usar los comandos head y tail juntos en Linux
Como tail
y head
Los comandos 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 a la vez.
Digamos que queremos ir de la línea 5 a la 10 desde /etc/passwd
expediente. Al principio, head
el comando recuperará las primeras 10 líneas y tail
El comando recuperará las últimas 5 líneas de la salida de 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
Eso es todo por ahora. En este artículo hemos aprendido algunos usos típicos de ambos comandos a través de ejemplos. Como puede ver, tanto la tail
y la head
Los comandos son muy útiles para controlar exactamente qué contenido de archivo se imprimirá en la pantalla. Ciertamente, son comandos flexibles que pueden mejorar mucho la gestión de sus archivos. Pruébalos.
¿Necesitas más detalles? Revisa el head
y la tail
comandos de páginas man.