我正在使用git-ftp而我正在尝试执行 awk 以仅包含第一行:
git ftp show | awk 'NR<7'
它在终端中运作完美。但是,将其作为别名执行会返回错误。
这就是我的git配置文件的样子:
[alias]
sh = ftp show | awk 'NR<7'
如果我运行git sh
,则会返回:致命:无法识别的选项:awk
我也尝试过使用show,但它也会返回错误:
[alias]
sh = show | awk 'NR<7'
致命:含糊不清的论点&#39; |&#39;:未知的修订版或路径不在工作树中。
可以通过某种方式编写此命令以使其作为git别名工作吗?
答案 0 :(得分:0)
首先要注意的是,git别名仅在以bang(感叹号)开头的情况下与shell命令一起使用。
我没有使用git-ftp,所以无法测试您的精确命令,但我改用git remote show origin
,因为它在我的存储库中非常冗长。
我发现以下git别名可以正常工作:sh = "!git remote show origin | awk 'NR<7'"
因此,我希望这个git别名为您提供解决方案:
sh = "!git ftp show | awk 'NR<7'"
意识到某些爆炸/竖起/引号组合可以用作git别名,而另一些组合则可能会失败,可能是因为“致命的错误配置行”。
最常见的真正问题是如何使用引号。诀窍可以是仅更改您的特定git别名shell命令行以消除或更改引用用法。
例如,我对git别名有一个要求,我通过将sed
命令更改为tr
来解决引用问题。然后,我不得不使用...| tr \\\\n
来加倍转义反斜杠。
对于这个特定问题,尽管我认为git-alias的引号不存在问题,但是更安全的报价解决方案是:
sh = ! git ftp show | head -6
尽管大多数读者可能已经知道需要大声疾呼,但他们可能没有意识到引用是一个更困难的问题。 尽管并非完全正确,但我发现本文对提出建议很有用:https://www.atlassian.com/blog/git/advanced-git-aliases