alb*_*ttx 57 bash shell alias zsh zshrc
我正在尝试为我的简单git add/commit/push创建一个带参数的别名.
我已经看到函数可以用作别名所以我尝试但我没有成功..
在我之前:
alias gitall="git add . ; git commit -m 'update' ; git push"
Run Code Online (Sandbox Code Playgroud)
但我希望能够修改我的提交:
function gitall() {
"git add ."
if [$1 != ""]
"git commit -m $1"
else
"git commit -m 'update'"
fi
"git push"
}
Run Code Online (Sandbox Code Playgroud)
(我知道这是一个可怕的git练习)
Kev*_*vin 73
你不能用参数*创建一个别名,它必须是一个函数.你的函数很接近,你只需引用某些参数而不是整个命令,并在其中添加空格[]
.
gitall() {
git add .
if [ "$1" != "" ] # or better, if [ -n "$1" ]
then
git commit -m "$1"
else
git commit -m update
fi
git push
}
Run Code Online (Sandbox Code Playgroud)
*:大多数shell不允许在别名中使用参数,我相信csh和衍生物都可以,但是你不应该使用它们.
joe*_*lpt 58
如果由于某种原因确实需要使用带参数的别名,可以通过在别名中嵌入函数并立即执行它来破解它:
alias example='f() { echo Your arg was $1. };f'
Run Code Online (Sandbox Code Playgroud)
我看到这种方法在.gitconfig别名中使用了很多.
我在.zshrc文件中使用了这个函数:
function gitall() {
git add .
if [ "$1" != "" ]
then
git commit -m "$1"
else
git commit -m update # default commit message is `update`
fi # closing statement of if-else block
git push origin HEAD
}
Run Code Online (Sandbox Code Playgroud)
这里git push origin HEAD
负责将您当前的分支推送到远程.
从命令提示符运行此命令: gitall "commit message goes here"
如果我们只运行gitall
没有任何提交消息,那么提交消息将update
如函数所述.