包管理器帮助的 Bash 函数/别名

包管理器帮助的 Bash 函数/别名

我正在使用 Arch Linux。我已经packer安装了 AUR 软件包,但我希望能够同时使用这pacman两个命令。我想我需要一个函数来实现这一点——我的意思是,每当我使用 pacman 时,它都会尝试使用 packer,如果失败(无效选项),它将使用 pacman-color。它还可以根据参数决定使用哪个程序。我不能只使用 packer(别名 pacman='sudo packer'),因为 packer 没有一些选项,如 -R 来删除软件包。但是,我希望始终使用它来安装和升级软件包,因为它可以从默认存储库以及 AUR 安装。

有人知道如何实现这一点吗,或者可以给我指出正确的方向吗?我是 Bash 脚本的新手。

谢谢。

编辑:我试过了pacman () { sudo packer $@ || sudo pacman-color $@ },唯一的问题是如果打包程序失败它会打印错误(例如 pacman -V 打印打包程序:)Option '-V' is not valid.

答案1

我自己找到了解决办法。这个方法运行良好(在 .bashrc 或 .zshrc 或其他任何文件中):

pacman() {
    if [[ $1 = -h* || $1 = "--help" ]]; then
        echo "pacman help:\n"
        /usr/bin/pacman -h
        echo "\n\npacker help:\n"
        packer -h
    elif [[ $1 = -V* || $1 = -Q* ]]; then
        pacman-colour "$@"
    elif [[ $1 = -Si*  || $1 = -Ss* ]]; then
        packer "$@"
    elif [[ ( $1 != -Sy $1 != -Sc* && $1 = -S* ) || $1 = -G* ]]; then
        sudo packer "$@"
    else
        sudo pacman-color "$@"
    fi
}

编辑:实际上,开发人员制作了一种称为 pacwrap 的东西,它可以更好地完成工作。

除非必要,它不会使用 sudo,而是根据所使用的操作选择 pacman 或 packer。

相关内容