14 comandos de cola y cabeza en Linux/Unix

muchas personas conocen el comando cat que es útil para mostrar todo el contenido del archivo. Pero en algunos casos tenemos que imprimir parte del archivo. En el post de hoy hablaremos de los comandos head y tail, que son muy útiles cuando quieres ver una parte determinada al principio o al final de un archivo, especialmente cuando estás seguro de que quieres ignorar el resto del contenido del archivo.,

comencemos con el comando tail, y exploremos todas las características que este práctico comando puede proporcionar y veamos cómo usarlo mejor para satisfacer sus necesidades. Después de eso te mostraremos algunas opciones que puedes hacer y que no puedes hacer con el comando head.

sintaxis de comandos Linux tail

tail ... ...

Tail es un comando que imprime el último número de líneas (10 líneas por defecto) de un archivo determinado, luego termina.
Ejemplo 1: por defecto «tail» imprime las últimas 10 líneas de un archivo, luego sale.,

tail/path/to/file

ejemplo:

como puede ver, esto imprime las últimas 10 líneas de/var/log / messages.

Ejemplo 2: Ahora qué hay de usted está interesado en solo las últimas 3 líneas de un archivo, o tal vez interesado en las últimas 15 líneas de un archivo. aquí es cuando la opción-n es útil, para elegir un número específico de líneas en lugar del predeterminado 10.,

tail -n <number_of_lines> /path/to/file

Example :

# tail -n 4 /etc/groupvboxusers:x:491:avahi:x:70:mailnull:x:47:smmsp:x:51:

Example 3: We can even open multiple files using tail command with out need to execute multiple tail commands to view multiple files., Suppose if you want to see first two lines of a

tail -n <number of lines> <file1> <file2> <file3>

Example:

surendra@sanne-taggle:~/code/sh$ tail -n 2 99abc.txt startup_script.sh wifiactivate.sh ==> 99abc.,txt <==
==> startup_script.sh <==sed -i 's/^.*PermitRootLogin.*$/PermitRootLogin yes/g' /etc/ssh/sshd_configservice sshd reload
==> wifiactivate.sh <==modprobe -rv iwlwifimodprobe -v iwlwifi 11n_disable=8

Example 4: Now this might be by far the most useful and commonly used option for tail command., A diferencia del comportamiento predeterminado que debe terminar después de imprimir cierto número de líneas, la opción-f «que significa seguir» mantendrá la secuencia en marcha. Comenzará a imprimir líneas adicionales en la consola agregadas al archivo después de que se abra. Este comando mantendrá el archivo abierto para mostrar los cambios actualizados en la consola hasta que el usuario rompa el comando.,

tail-f/path/to/file

ejemplo:

como puede ver en este ejemplo, quería iniciar el servicio crond, luego ver el archivo de registro/var/log / cron cuando se inicia el servicio. Usé; que una especie de encadenamiento de comandos en Linux inorder para ejecutar dos comandos en una sola línea. No estoy interesado en solo unas pocas líneas y luego salir, pero además estoy interesado en seguir viendo todo el archivo de registro hasta que comience el servicio, luego romperlo con CTRL+C.,

ejemplo 5: el mismo comando tail-f se puede replicar usando less command well. Una vez que abra un archivo con less

less /path/to/filename

una vez que abra el archivo, presione shift+F

ejemplo:

para salir del modo de actualización en less, debe presionar CTRL+C y luego presionar Q para salir.,C89d637cf1″>ejemplo 6: tenemos otra opción-s que siempre debe usarse con-f» determinará el intervalo de sueño, mientras que tail-f seguirá viendo el archivo, la frecuencia de actualización es cada 1 segundo, si desea controlar esto, entonces tendrá que usar la opción-s «sleep» y especificar el intervalo de sueño

tail-f-s <intervalo de sueño en segundos> /path/to/file

ejemplo :

ejemplo 7: como hemos visto en el ejemplo 3, podemos abrir más archivos usando el comando tail., Incluso podemos ver 2 archivos al mismo tiempo creciendo usando la opción-f también. También imprimirá una visualización de encabezado que archivo está mostrando esta salida. la línea de encabezado comenzará con «==>»

tail /path/to/file1 /path/to/file2

ejemplo:

ejemplo 8: si desea eliminar este encabezado, utilice la opción-q para el modo silencioso.,

ejemplo:

ejemplo 9: Ahora qué pasa si tengo un /var/log/messages muy grande y solo estoy interesado en el último cierto número de bytes de datos, la opción-c puede hacer esto fácilmente., observe el siguiente ejemplo donde quiero ver solo los últimos 500 bytes de datos de /var/log/messages

tail-c <número de bytes> /path/to/file

ejemplo :

ahora, ya que hemos estado hablando durante un tiempo sobre Tail, hablemos del comando «head».

el comando Head obviamente, al contrario que tail, imprimirá las primeras 10 líneas del archivo., Hasta esta parte del post, el comando head hará casi lo mismo que tail en todos los ejemplos anteriores, con excepción de la opción-f, no hay ninguna opción-f en head, lo cual es muy natural ya que los archivos siempre crecerán desde la parte inferior.

sintaxis de comandos head en Linux

 head... ...

ejemplo 10: como se mencionó anteriormente, imprima las primeras 10 líneas.

ejemplo 11: imprime las dos primeras líneas de un archivo.,

# head-n 2 /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin

ejemplo 12: Esta opción le permite imprimir todas las líneas a partir de un número de línea que especifique, a diferencia del ejemplo 11 que le mostrará el primer número de líneas que proporcionó.,

head-n <número de líneas precedido con "-"> /ruta/a/archivo

Ejemplo :

Como se puede notar, en este ejemplo, se imprime todas las líneas que comienzan después de la línea 27.

Combine head and tail command in Linux

ejemplo 13: como los comandos tail y head imprimen diferentes partes de archivos de una manera efectiva, podemos combinar estos dos para imprimir un filtrado avanzado del contenido del archivo., Para imprimir la línea 15 a la línea 20 en el archivo/etc / passwd use el ejemplo siguiente.

head-n 20 /etc/passwd | tail-n 5

Salida:

Ejemplo 14: Muchas personas no sugieren método anterior para la impresión de una línea a otra línea. El ejemplo anterior es para mostrar cómo podemos combinar estas cosas. Si realmente desea imprimir una línea en particular, utilice el comando sed como se muestra a continuación.

Ejemplo:

$ sed -n '5p' /etc/passwdsync:x:4:65534:sync:/bin:/bin/sync

Author: admin

Deja una respuesta

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