+if (( ! $+commands[pacman] )); then
+ return 1
+fi
+
# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system.
alias pacin='sudo pacman -S' # Install specific package(s) from the repositories
alias pacu='sudo pacman -U' # Install specific package not from the repositories but from a file
alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies
-alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies
+alias pacrem='sudo pacman -Rns' # Remove the specified package(s) and unneeded dependencies
alias pacrm='sudo pacman -Rnsc' # Remove the specified package(s), its configuration(s) and unneeded dependencies
alias pacsi='pacman -Sii' # Display information about a given package in the repositories
alias pacss='pacman -Ss' # Search for package(s) in the repositories
alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package
alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
+[[ -x /usr/bin/packer ]] && alias aur='packer'
+
# https://bbs.archlinux.org/viewtopic.php?id=93683
paclist() {
- pacman -Qei | awk 'BEGIN {FS=": "}/^Name/{printf("\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}'
+ pacman -Qei "$@" | awk 'BEGIN {FS=": "}/^Name/{printf("\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}'
+}
+
+pacclean() {
+ local _count_pkg=$(pacman -Qq | wc -l)
+ local _count_pkg_exp=$(pacman -Qeq | wc -l)
+ local _pkgs=( $(pacman -Qeq) )
+ for pkg in ${_pkgs[@]}; do
+ # the file has been removed by a previous clean
+ pacman -Qq $pkg 2>&1 1>/dev/null || continue
+
+ pacman -Qi $pkg | awk 'BEGIN {FS=": "}/^Name/{printf("\n\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}/^(Required|Optional For)/'
+
+ local edrq=''
+ while true; do
+ echo -n "Explicit, Dependency, Remove, Quit? [Edrq] "
+ read -sk edrq
+ echo
+ case $edrq in
+ [Qq]) break 2 ;;
+ $'\n') ;&
+ [Ee]) break ;;
+ [Rr]) sudo pacman -Rnscu $pkg; break ;;
+ [Dd]) sudo pacman -D --asdeps $pkg; break ;;
+ esac
+ done
+ done
+ local _count_pkg_after=$(pacman -Qq | wc -l)
+ local _count_pkg_exp_after=$(pacman -Qeq | wc -l)
+ local _delta_pkg=$(($_count_pkg_after - $_count_pkg))
+ local _delta_pkg_exp=$(($_count_pkg_exp_after - $_count_pkg_exp))
+ printf "\n %8s | %8s" "Packages" "Explicit"
+ printf "\nBefore | %8d | %8d" $_count_pkg $_count_pkg_exp
+ printf "\n After | %8d | %8d" $_count_pkg_after $_count_pkg_exp_after
+ printf "\n | %8d | %8d" $_delta_pkg $_delta_pkg_exp
+ printf "\n"
}
# [l]ist [o]orphans
-alias paclo='sudo pacman -Qdt'
+alias paclo='pacman -Qdt'
# [r]emove [o]orphans
alias pacro='sudo pacman -Rnscu $(pacman -Qtdq)'
# Display information about given packages (merges output of -Sii and -Qii)
paci() {
for p in $@; do
- if [[ -n "$(pacman -Qq "$p" 2>/dev/null)" ]]; then
+ if [[ -n "$(pacman -Qq "$p" 2>/dev/null)" ]]; then
diff -u100 <(pacman -Qii "$p") <(pacman -Sii "$p" | sed '/^$/,$ d') | sed -e '1,3 d' -e 's/[-+ ]//'
else
pacman -Sii "$p"
fi
done
}
+# will only work after another pacman completion has been called first
+compdef '_pacman_completions_all_packages' paci=pacman
+
+pacstat() {
+ printf "Packages:\n"
+ printf "%7d native\n" $(LC_ALL=C pacman -Qn | wc -l)
+ printf "%7d foreign\n" $(LC_ALL=C pacman -Qm | wc -l)
+ printf "%7d total\n" $(LC_ALL=C pacman -Q | wc -l)
+ printf "Repos:\n"
+ LC_ALL=C pacman -Sl | sed -n '/\[installed\]/s/^\([^ ]*\).*/\1/p' | uniq -c
+}
pacdisowned() {
tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$
pacman -Qlq | sort -u > "$db"
- find /bin /etc /lib /sbin /usr \
- ! -name lost+found \
+ local -a d
+ if [[ -z $@ ]]; then
+ d=(/etc /usr)
+ else
+ d=($@)
+ fi
+ find ${d[@]} \
+ ! \( -name lost+found \
+ -o -path '*/local/*' \
+ -o -path "*/share/mime/*" \
+ \) \
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
comm -23 "$fs" "$db"