【问题标题】:Silence git (no errors, no output, don't say a word)沉默 git(没有错误,没有输出,不说话)
【发布时间】:2015-08-03 10:14:34
【问题描述】:

我正在使用 git 来管理一些自定义包。如果包不在第一个 repo 中,我想运行第二个命令来尝试另一个源。我不需要告诉用户这正在发生。用户不需要知道 git 的存在。

if ! git clone git@gitlab.com:username/repo directory -q
        then
            #do something else
        fi

即使使用-q,git 仍会在控制台中打印致命错误。

那么,我该如何让小 git 静音呢?

【问题讨论】:

  • 或许>/dev/null 2>&1
  • @bishop 是的,就可以了。干杯。如果您不介意,请将其添加为其他人的答案。
  • @axiac Could not read from remote repository,这是预期的。
  • 没关系,我以为错误是由 shell 显示的(语法错误或类似的东西)。我不知道这种检查命令返回码的方法(我总是运行命令然后在if 语句中检查$?)。
  • 很高兴它成功了。给@Paul 加分!

标签: git bash silent


【解决方案1】:

两种方式:

git clone git@gitlab.com:username/repo directory > /dev/null 2>&1 - 旧 bash

和:

git clone git@gitlab.com:username/repo directory &> /dev/null - 较新的 bash(根据下面的链接,高于版本 4)

更多详情请阅读I/O Redirection in Bash。 基本上你在这里所做的是将stdoutstderr 重定向到/dev/null,这是“无处”。

【讨论】:

  • 哪个最兼容?
  • “旧 bash”版本是适用于所有 shell 的可移植版本。 “较新的 bash” 版本依赖于一个甚至可能根本不可用的不合格扩展:我不知道 bash 是否在 POSIX 模式下禁用它,但即使它没有,它也应该如此,所以未来版本可能。
  • 是的,版本更便携/兼容!
【解决方案2】:

git clone git@gitlab.com:username/repo 目录 > /dev/null 2>&1 - 旧 bash

以上会更兼容,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2011-06-26
    • 2018-10-24
    • 2012-08-02
    • 2017-04-05
    • 2013-11-12
    相关资源
    最近更新 更多