Estoy en el sistema ejecutando una distribución (bastante reciente) basada en Debian.
Me gustaría generar una lista simple de todos los paquetes instalados que coinciden con un cierto patrón. Puedo hacer eso, corriendo, digamos,
apt list --installed "linux-image-*" | cut -d/ -f1
pero obtengo líneas que no me interesan, por ejemplo:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
Entonces tal vez sea mejor que no lo use apt
. Puedo ejecutar dpkg-query así:
dpkg-query --showformat='${Package}\n' --show "linux-image*"
pero eso no se limita a los paquetes instalados. Podría usar
dpkg-query --list "linux-image-*" | grep "ii"
pero luego tendría que hacer un montón de procesamiento de texto, y ¿quién puede confiar en esos espacios, verdad?
En resumen, ¿cuál es la forma correcta de obtener la lista de paquetes instalados que coinciden con un patrón?
Nota :
- Puntos de bonificación si puede ser una expresión regular adecuada en lugar de solo un globo de concha.
- Tener que analizar el texto parece una solución menos que ideal; si eso es lo que sugiere, discuta por qué no hay una mejor manera.
fuente
aptitude search
yapt list
en este caso no.Hablando de expresiones regulares:
También se puede usar
dpkg-query
con-f
la opción (--showformat), que si se ejecuta sin nombre del paquete, por defecto se enumeran únicamente los paquetes instalados.fuente
Para "atrapar" el término buscado cuando grep ping dpkg , necesita encerrar el término de búsqueda de la siguiente manera. " git " se usa como el término de búsqueda de muestras:
El quilate (^) ii seguido de (2) espacios que anteceden el término buscado no garantiza nada ANTES que no sea que la combinación de caracteres puede coincidir.
El
[[:space:]]
colindante con el término buscado impide que se produzcan coincidencias parciales solo al hacer coincidir los espacios inmediatamente DESPUÉS .fuente