我想轻松地git-go
为此终端线设置别名:
git commit -m "init "; git push; git status
因此,当我输入 git-go 时,应输入此行。
我怎样才能做到这一点?我看到的答案仅涵盖不带参数的命令的别名。但我想为任意终端线设置别名。
编辑: 我学会了使用函数而不是别名,因为
关于别名的定义和使用的规则有些混乱。
和
对于几乎所有目的,shell 函数都比别名更受欢迎。
因此,除非必须,否则不要使用别名。 https://ss64.com/bash/alias.html
执行此操作的方式与设置任何别名的方式相同。
它变得棘手的情况不是当别名运行命令并将参数传递给该命令时,甚至当别名运行由 分隔的多个命令
;
时,而是当您希望别名接受并使用其自己的命令行参数时.例如,您在该别名名称之后写的任何内容都将粘贴到末尾,因此作为命令行参数传递给第三个
git
命令,在git status
. (实际上,与其说将以下文本粘贴到末尾,不如将以下文本单独保留,并将别名替换为其定义。)因此,您可以在没有参数的情况下运行您的别名,这很有效,最后一个命令是
git status
:或者,您可以使用要传递给的参数运行它
git status
。例如,当你以这种方式运行它时,最后一个命令是git-status --show-stash
:在 Bash(和其他 Bourne 风格的 shell)中,你不能用别名做的是让别名接受命令行参数并将它们放在末尾以外的其他地方。
例如,假设您想
git-go
接受它用于提交消息的参数。您将无法将其写为别名。解决方案是将其编写为 shell 函数:在 shell 函数的定义中,位置参数
$1
、$2
等保存传递给 shell 函数的命令行参数的值。别名没有与此相对应的功能,因为别名扩展实际上是一种宏处理形式,发生在很早时,当 shell 解析命令时。当然,您可以将其编写为 shell 函数,即使您不需要在定义中使用位置参数,正如Videonauth 所建议的那样。
您可以在
~/.bash_aliases
文件中将其声明为函数,如下所示:或者您可以在同一个文件中创建一个别名,如下所示:
. ~/.bash_aliases
更改后不要忘记重新打开终端或获取文件 ( )。在处理
git
命令时,您可能还想知道添加别名的语法,尤其是git
:这将为您的本地
git
配置 (at~/.gitconfig
) 添加一个新别名,并允许您发出在
git
存储库中时。每当您运行git go
shell 时,都会调用 shell 并将命令git commit -m "init"; git push; git status
传递给它。有关详细信息,请参阅git 文档 。
这是一个引用问题。我试过这个:
但是得到了这个错误:
我收到该错误是因为我错误地使用了嵌套引号。这是正确的语法:
或者:
或者如果提交消息中没有空格,则不带引号: