El comando uniq es un comando muy potente, utilizado en conjunto con el comando sort, especialmente para análisis de archivos de registro. Le permite ordenar y mostrar las entradas de los registros eliminando duplicados.
Para ilustrar cómo funciona el comando uniq, vamos a utilizar un archivo llamado firstnames.txt que contiene una lista con nombres:
antoine
xavier
steven
patrick
xavier
antoine
antoine
steven
Note
uniq requiere que el archivo de entrada sea ordenado porque solo compara líneas consecutivas.
Sin utilizar ningún argumento, el comando uniq no mostrará las líneas idénticas continuas dentro del archivo firstnames.txt:
$ sort firstnames.txt | uniq
antoine
patrick
steven
xavier
Para mostrar sólo las filas que aparecen una única vez, utilice la opción -u:
$ sort firstnames.txt | uniq -u
patrick
Al contrario, para mostrar únicamente las líneas que aparecen como mínimo dos veces en el archivo, debe utilizar la opción -d:
$ sort firstnames.txt | uniq -d
antoine
steven
xavier
Para eliminar las líneas que aparecen solo una vez, utilice la opción -D:
$ sort firstnames.txt | uniq -D
antoine
antoine
antoine
steven
steven
xavier
Finalmente, para contar el número de ocurrencias de cada línea, utilice la opción -c:
$ sort firstnames.txt | uniq -c
3 antoina
1 patrick
2 steven
2 xavier
El comando xargs le permite la construcción y ejecución de líneas de comando desde la entrada estándar.
El comando xargs lee espacios en blanco o argumentos delimitados desde la entrada estándar, y ejecuta el comando (/bin/echo por defecto) una o más veces utilizando los argumentos iniciales seguidos por los argumentos leídos desde la entrada estándar.
Un primer y simple ejemplo sería el siguiente:
$ xargs
uso
de
xargs
<CTRL+D>
uso de xargs
El comando xargs espera una entrada desde la entrada estándar stdin. Se introducen tres líneas. El fin de la entrada del usuario para xargs se especifica a mediante la secuencia de teclas CTRL+D. Entonces xargs ejecuta el comando por defecto echo seguido de los tres argumentos correspondientes a la entrada del usuario, a saber:
$ echo "uso" "de" "xargs"
uso de xargs
Es posible especificar un comando a ejecutar por xargs.
En el siguiente ejemplo, xargs ejecutará el comando ls -ld en el conjunto de carpetas especificado en la entrada estándar:
$ xargs ls -ld
/home
/tmp
/root
<CTRL+D>
drwxr-xr-x. 9 root root 4096 5 avril 11:10 /home
dr-xr-x---. 2 raíz 4096 5 avril 15:52 /root
drwxrwxrwt. 3 root root 4096 6 avril 10:25 /tmp
En la práctica, el comando xargs ejecutó el comando ls -ld /home /tmp /root.
¿Qué ocurre si el comando a ejecutar no acepta múltiples argumentos como es el caso del comando find?
En este caso, se debe forzar al comando xargs a ejecutar el comando find varias veces (una vez por línea introducida mediante la entrada estándar). La opción -L seguida por un entero le permite especificar el número máximo de entradas para ser procesadas con el comando en un momento:
Caso de estudio de una de seguridad con el comando tar basado en una búsqueda:
$ find /var/log/ -name "*.log" -mtime -1 | xargs tar cvfP /root/log.tar
$ tar tvfP /root/log. ar
-rw-r--r-- root/root 1720 2017-04-05 15:43 /var/log/boot.log
-rw-r--r-- root/root 499270 2017-04-06 11:01 /var/log/audit/audit.log
La característica especial del comando xargs es que coloca el argumento de entrada al final del comando llamado. Esto funciona muy bien con el ejemplo anterior, ya que los archivos pasados formarán la lista de archivos que se añadirán al archivo.
Ahora, si tomamos el ejemplo del comando cp y queremos copiar una lista de archivos en un directorio, esta lista de archivos se añadirá al final del comando... pero lo que el comando cp espera al final del comando es el destino. Para hacer esto, utilizamos la opción -I que permite poner los argumentos de entrada en otro lugar diferente al final de la línea.
El paquete yum-utils es una colección de utilidades de diferentes autores para yum, que hacen que sea más fácil y más potente de usar.
Note
Aunque yum ha sido reemplazado por dnf en Rocky Linux 8, el nombre del paquete sigue siendo yum-utils, también puede instalarlo como dnf-utils. Estas son utilidades clásicas de YUM implementadas como CLI sobre DNF para mantener la compatibilidad hacia atrás con yum-3.
Aquí se muestran algunos ejemplos de uso:
Comando repoquery:
El comando repoquery se utiliza para consultar los paquetes en el repositorio.
Ejemplos de uso:
Mostrar las dependencias de un paquete (puede ser un paquete de software que ha sido instalado o no instalado), equivale a dfn deplist <package-name>.
repoquery --requires
Mostrar los archivos proporcionados por un paquete instalado (no funciona para paquetes que no están instalados), equivale a rpm -ql <package-name>