【问题标题】:How to clear the result of a command?如何清除命令的结果?
【发布时间】:2015-06-03 20:46:11
【问题描述】:

所以,假设这个 cmd 的结果:git l | tail -n 1 | awk '{print $3}’ 就是这个哈希 709bc16

当我运行这个 cmd 时:

git show --pretty="format:" --name-only $(git l | tail -n 1 | awk '{print $3}’)

我收到此错误

fatal: ambiguous argument '709bc16': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>…]’

当我直接尝试git show --pretty="format:" 709bc16

那么cmd就执行成功了。

我什至不知道该问什么。我相信是关于这个 cmd 结果的格式:$(git l | tail -n 1 | awk '{print $3}’)

【问题讨论】:

  • 什么是git lgit log?
  • git l 的别名是什么?看起来输出包含一个不可见的字符,可能是回车? git l | tail -n 1 | awk '{print $3}' | hexdump -C 的输出是什么?
  • @chepner 是的。这是它的显示方式:[33m709bc16[32m
  • 你得到了git用来着色输出的ANSI转义字符;最好的解决方案是修改git l(或创建一个新别名)以输出未着色的文本。
  • 除非您指定 git l 的定义,否则您的问题将很难回答。

标签: git bash shell awk


【解决方案1】:

根据 cmets 中对围绕您的修订短名称的额外不可见字符的诊断,您的 git l 命令可能是“瓷器”(UI)git 命令的别名,而不是“管道”(shell 脚本)命令。

Porcelain 命令在命令行上更加用户友好,通常使用颜色、缩进和 ASCII 艺术来显示您的存储库。但是,没有指定确切的输出,并且会随着版本的变化和演变而变化。 Plumbing 命令是低级命令,具有精确指定的纯文本输出,专为 shell 脚本等情况而设计。

您可能需要扫描git man page 以获取相关的管道命令,例如git rev-list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2018-04-22
    • 2012-10-07
    • 2011-04-28
    • 2020-04-30
    • 2018-03-15
    相关资源
    最近更新 更多