Git别名returns使用管道命令时出错
Git alias returns an error when using pipe command
我正在使用 git-ftp 并尝试执行 awk 以仅包含第一行:
git ftp show | awk 'NR<7'
它在终端中完美运行。但是作为别名 returns 执行它会出错。
这是我的 git 配置文件的样子:
[alias]
sh = ftp show | awk 'NR<7'
如果我 运行 git sh
它 returns: fatal: Unrecognized option: awk
我也尝试过只使用 show,但它也 returns 一个错误:
[alias]
sh = show | awk 'NR<7'
致命:不明确的参数“|”:未知修订版或不在工作树中的路径。
能否以某种方式格式化此命令以使其作为 git 别名使用?
首先要注意的是 git 别名仅在带有感叹号(感叹号)前缀的情况下与 shell 命令一起使用。
我没有使用 git-ftp 所以我无法测试你的精确命令,但我使用了 git remote show origin
因为它在我的一个回购协议中非常冗长。
我发现以下 git 别名工作正常:sh = "!git remote show origin | awk 'NR<7'"
因此,我希望这个 git 别名能成为您的解决方案:
sh = "!git ftp show | awk 'NR<7'"
请注意,某些 bang/pipe/quote 组合可以用作 git 别名,而其他组合可能会失败,可能与 "fatal bad config line" 一样。
大多数情况下,真正的问题是如何使用引号。技巧可以是仅更改您的特定 git 别名 shell 命令行以消除或更改引号用法。
例如,我有一个 git 别名的要求,我通过将 sed
命令更改为 tr
来解决引用问题。然后我不得不使用以下命令双重转义反斜杠:...| tr \\n
.
对于这个特定问题,虽然我认为 git-alias 的引号没有问题,但更安全的引号解决方案是:
sh = ! git ftp show | head -6
虽然大多数读者可能已经知道 shell 的要求,但他们可能没有意识到引用是一个更困难的问题。
虽然不完全正确,但我发现这篇文章对想法很有用:https://www.atlassian.com/blog/git/advanced-git-aliases
我正在使用 git-ftp 并尝试执行 awk 以仅包含第一行:
git ftp show | awk 'NR<7'
它在终端中完美运行。但是作为别名 returns 执行它会出错。
这是我的 git 配置文件的样子:
[alias]
sh = ftp show | awk 'NR<7'
如果我 运行 git sh
它 returns: fatal: Unrecognized option: awk
我也尝试过只使用 show,但它也 returns 一个错误:
[alias]
sh = show | awk 'NR<7'
致命:不明确的参数“|”:未知修订版或不在工作树中的路径。
能否以某种方式格式化此命令以使其作为 git 别名使用?
首先要注意的是 git 别名仅在带有感叹号(感叹号)前缀的情况下与 shell 命令一起使用。
我没有使用 git-ftp 所以我无法测试你的精确命令,但我使用了 git remote show origin
因为它在我的一个回购协议中非常冗长。
我发现以下 git 别名工作正常:sh = "!git remote show origin | awk 'NR<7'"
因此,我希望这个 git 别名能成为您的解决方案:
sh = "!git ftp show | awk 'NR<7'"
请注意,某些 bang/pipe/quote 组合可以用作 git 别名,而其他组合可能会失败,可能与 "fatal bad config line" 一样。
大多数情况下,真正的问题是如何使用引号。技巧可以是仅更改您的特定 git 别名 shell 命令行以消除或更改引号用法。
例如,我有一个 git 别名的要求,我通过将 sed
命令更改为 tr
来解决引用问题。然后我不得不使用以下命令双重转义反斜杠:...| tr \\n
.
对于这个特定问题,虽然我认为 git-alias 的引号没有问题,但更安全的引号解决方案是:
sh = ! git ftp show | head -6
虽然大多数读者可能已经知道 shell 的要求,但他们可能没有意识到引用是一个更困难的问题。 虽然不完全正确,但我发现这篇文章对想法很有用:https://www.atlassian.com/blog/git/advanced-git-aliases