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.