added pkgf
This commit is contained in:
@@ -125,7 +125,8 @@ A bar-style prompt showing current time, execution time of the last command
|
|||||||
| `meteo` | info | Display weather forecast for the configured or given city |
|
| `meteo` | info | Display weather forecast for the configured or given city |
|
||||||
| `myextip` | net | Get information about your public IP address |
|
| `myextip` | net | Get information about your public IP address |
|
||||||
| `get_pkgmgr` | packages | Detect the active package manager of the running distribution (`apt`, `dnf`, `yum`, `zypper`, `pacman`, `apk`, `portage`, `xbps`, `nix`) |
|
| `get_pkgmgr` | packages | Detect the active package manager of the running distribution (`apt`, `dnf`, `yum`, `zypper`, `pacman`, `apk`, `portage`, `xbps`, `nix`) |
|
||||||
| `pkgs` | packages | Search for a pattern in installed package names (distro-aware via `get_pkgmgr`, supports `-i`) |
|
| `pkgf` | packages | Find which installed package owns a given file (distro-aware via `get_pkgmgr`) |
|
||||||
|
| `pkgs` | packages | Search for a pattern in installed package names (distro-aware via `get_pkgmgr`) |
|
||||||
| `ppg` | processes | Look for the given pattern in running processes |
|
| `ppg` | processes | Look for the given pattern in running processes |
|
||||||
| `ppn` | processes | List processes matching an exact command name |
|
| `ppn` | processes | List processes matching an exact command name |
|
||||||
| `ppu` | processes | List processes owned by a specific user |
|
| `ppu` | processes | List processes owned by a specific user |
|
||||||
@@ -133,7 +134,7 @@ A bar-style prompt showing current time, execution time of the last command
|
|||||||
| `pwdscore` | pwd | Calculate the strength score of a given password |
|
| `pwdscore` | pwd | Calculate the strength score of a given password |
|
||||||
| `rain` | rain | Console screensaver with falling-rain effect (multiple color themes) |
|
| `rain` | rain | Console screensaver with falling-rain effect (multiple color themes) |
|
||||||
| `rainbow` | rain | Full-screen rainbow screensaver using only background colors, with horizontal color shifting |
|
| `rainbow` | rain | Full-screen rainbow screensaver using only background colors, with horizontal color shifting |
|
||||||
| `rmhost` | ssh | Remove host (name and IP) from SSH known_hosts; supports `--all-users` as root |
|
| `rmhost` | ssh | Remove host(s) (name and IP) from SSH known_hosts; supports `--all-users` as root |
|
||||||
| `rmspc` | filefct | Replace spaces in filenames with underscores (or a custom character) |
|
| `rmspc` | filefct | Replace spaces in filenames with underscores (or a custom character) |
|
||||||
| `setc` | lang | Set locale to standard C (POSIX) |
|
| `setc` | lang | Set locale to standard C (POSIX) |
|
||||||
| `setlocale` | lang | Set console locale to any installed locale |
|
| `setlocale` | lang | Set console locale to any installed locale |
|
||||||
|
|||||||
@@ -86,7 +86,8 @@ help()
|
|||||||
printf "mdcat\t\tRender Markdown files in terminal with colors and code frames\n"
|
printf "mdcat\t\tRender Markdown files in terminal with colors and code frames\n"
|
||||||
printf "meteo\t\tDisplay weather forecast for the configured or given city\n"
|
printf "meteo\t\tDisplay weather forecast for the configured or given city\n"
|
||||||
printf "myextip\t\tGet information about your public IP address\n"
|
printf "myextip\t\tGet information about your public IP address\n"
|
||||||
printf "pkgs\t\tSearch for a pattern in installed package names (dpkg/rpm, supports -i)\n"
|
printf "pkgf\t\tFind which installed package owns a given file (distro-aware)\n"
|
||||||
|
printf "pkgs\t\tSearch for a pattern in installed package names (distro-aware)\n"
|
||||||
printf "ppg\t\tLook for the given pattern in running processes\n"
|
printf "ppg\t\tLook for the given pattern in running processes\n"
|
||||||
printf "ppn\t\tList processes matching an exact command name\n"
|
printf "ppn\t\tList processes matching an exact command name\n"
|
||||||
printf "ppu\t\tList processes owned by a specific user\n"
|
printf "ppu\t\tList processes owned by a specific user\n"
|
||||||
|
|||||||
@@ -194,6 +194,84 @@ export -f pkgs
|
|||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Find which installed package a file belongs to.
|
||||||
|
# Usage: pkgf <file>
|
||||||
|
pkgf()
|
||||||
|
{
|
||||||
|
local PARSED
|
||||||
|
PARSED=$(getopt -o h --long help -n 'pkgf' -- "$@")
|
||||||
|
# shellcheck disable=SC2181
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
disp E "Invalid options, use \"pkgf --help\" to display usage."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
eval set -- "$PARSED"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
printf "pkgf: Find which installed package owns a given file.\n\n"
|
||||||
|
printf "Usage: pkgf [options] <file>\n\n"
|
||||||
|
printf "Options:\n"
|
||||||
|
printf "\t-h, --help\tDisplay this help screen\n"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
disp E "Invalid option: $1"
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
local file="$1"
|
||||||
|
[[ -z "$file" ]] && {
|
||||||
|
disp E "Please specify a file path."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
local pkgmgr
|
||||||
|
pkgmgr=$(get_pkgmgr) || {
|
||||||
|
disp E "No usable package manager could be detected on this system."
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$pkgmgr" in
|
||||||
|
apt)
|
||||||
|
dpkg -S "$file"
|
||||||
|
;;
|
||||||
|
dnf|yum|zypper)
|
||||||
|
rpm -qf "$file"
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Qo "$file"
|
||||||
|
;;
|
||||||
|
apk)
|
||||||
|
apk info --who-owns "$file"
|
||||||
|
;;
|
||||||
|
portage)
|
||||||
|
qfile "$file"
|
||||||
|
;;
|
||||||
|
xbps)
|
||||||
|
xbps-query -o "$file"
|
||||||
|
;;
|
||||||
|
nix)
|
||||||
|
nix-locate "$file"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
disp E "Package manager '$pkgmgr' is not supported by pkgf."
|
||||||
|
return 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
export -f pkgf
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
load_conf "packages"
|
load_conf "packages"
|
||||||
|
|
||||||
# EOF
|
# EOF
|
||||||
|
|||||||
Reference in New Issue
Block a user