X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/c5eecb3d80e5715d909b0046b957927358ee48c9..0d89e0b38f04e0dc6fd0e2b51efa044bd3ccfc5a:/zsh/aliases/pacman.zsh diff --git a/zsh/aliases/pacman.zsh b/zsh/aliases/pacman.zsh index af0dc9e..ba27286 100644 --- a/zsh/aliases/pacman.zsh +++ b/zsh/aliases/pacman.zsh @@ -1,9 +1,13 @@ +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 @@ -16,25 +20,38 @@ alias pacexp='sudo pacman -D --asexplicit' # Mark package as explicit 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}' } # [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-$$ @@ -46,8 +63,17 @@ pacdisowned() { 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"