如何修改 bash 别名以从终端获取输入?

如何修改 bash 别名以从终端获取输入?

在我的 中.bashrc,我有别名:

#Custom aliases
alias gta="git add -A"
alias gtc="git commit -m 'Added files' "

我想创建一个执行命令的新别名git push origin <branch name>。早些时候这很容易,因为它总是设置为git push origin master

但现在,GitHub 已更改mastermain适用于 2020 年 10 月之后创建的所有存储库。现在我想要的是我想设置一个别名gtp,它要求我提示使用mainmaster。根据选择,我希望执行适当的命令。

PS:我知道我们可以创建2个别名,一个 for master,一个 for main,但只是出于好奇,如何解决上述问题?

答案1

您可以在您的.bashrc

alias gtp=f

f() {
  arg="$1"
  if [[ -z "$arg" ]] || [[ "$arg" != main && "$arg" != master ]]; then
    echo "Bad argument"
  else
    git push origin "$arg"
  fi
}

然后

~$ . .bashrc
$ gtp
Bad argument

$ gtp foo
Bad argument

$ gtp main
<git doing it's thing>

$ gtp master
<git doing it's thing>

或者@Kusalananda的建议

f() {
    arg="$1"

    case $arg in
        main|master)
            git push origin "$arg"
            ;;
        *)
            echo error >&2
    esac
}

相关内容