#!/bin/bash # xpkg [-rRamOHDLvV] - convenient package lister flags= filter0='/^.[^i*].\? /d' filter1='s/^...\? //' filter2='s/-[^- ]* .*//' mode="--search=" while getopts R:r:vVmOHDLa flag; do case "$flag" in D) exec comm -23 <(xpkg | sort) <(xpkg -a | sort);; L) mode="--regex -p repository -s /"; filter0='/:\/\//d';; r) flags="$flags -r $OPTARG";; R) flags="$flags -i --repository=$OPTARG";; m|O|H) mode="-$flag"; filter0=; filter1=; filter2='s/-[^-]*$//';; a) flags="$flags -R"; filter0=;; v) filter2='s/:\? .*//';; V) filter2=;; ?) printf "Usage: %s [-rRamOHvV] -r ROOTDIR specifies a full path for the target root directory -R REPO consider only packages from REPO -a list all packages (default: only installed) -m list manual packages -O list orphaned packages -H list packages on hold -D list installed packages not in repo -L list installed packages not from remote repos -v show version numbers -V show version numbers and description " $0 >&2 exit 1;; esac done xbps-query $flags $mode | sed "$filter0;$filter1;$filter2"