从Bash脚本中退出Git日志

7

我正在尝试编写一个“实时git日志”bash脚本。以下是迄今为止的代码:

#!/bin/sh
while true;
do
    clear
    git log --graph -10 --all --color --date=short --pretty=format:"%Cred%x09%h %Creset%ad%Cblue%d %Creset %s %C(bold)(%an)%Creset"
    sleep 3
done

我的问题是git log使用分页器,您必须按下q才能退出,否则它将一直保持在那里。有没有办法在bash中编写退出命令?我尝试了回显q,但没有成功。(我看到这里的另一个帖子建议echo "q">/dev/console——但我的环境中没有dev console)。
系统:win7 box-用mingw(1.7.6.msysget.0)模拟bash。
更新:
以下是完成的脚本。
#!/bin/sh
while true;
do
    clear
    git log \
    --graph \
    --all \
    --color \
    --date=short \
    -40 \
    --pretty=format:"%C(yellow)%h%x20%C(white)%cd%C(green)%d%C(reset)%x20%s%x20%C(bold)(%an)%Creset" |
    cat -
    sleep 15
done

-40是个人口味问题。将其更改为适合您和终端屏幕大小的任何数字。

3个回答

23

使用 --no-pager 是正确的方式。

git --no-pager log

所以完整的命令应该是:

git --no-pager log --graph -10 --all --color --date=short --pretty=format:"%Cred%x09%h %Creset%ad%Cblue%d %Creset %s %C(bold)(%an)%Creset"

1
好的,那是一个开始。我之前没有听说过--no-pager标志。但是尝试调用该命令。格式完全消失了,并且输出中有(我假设)转义字符。完全无用的输出。
  • [31m 4c29b0d [m2012-10-01[34m (HEAD) [m 更新test.php [1m(xero)[m
- xero
它在我的Windows 7系统上运行良好。你的终端配置可能出了点问题吧?不过我是通过命令提示符使用它,而不是通过mingw。 - eis
必须确认 - 在Cygwin Bash和其他环境中也可以正常工作,但对MinGW没有经验。 - eis
奇怪,我正在使用Console2(http://sourceforge.net/projects/console/)作为Mingw的前端。我不知道那是否引起了这个问题。我仍然支持你的帖子。 - xero
也许与此相关,Console2的自定义颜色?https://dev59.com/JnE95IYBdhLWcg3wHqWl - 尽管您可能不需要它,因为它也可以使用cat工作。 - eis

5

尝试以下代码:

git log \
    --graph -10 \
    --all \
    --color \
    --date=short \
    --pretty=format:"%Cred%x09%h %Creset%ad%Cblue%d %Creset %s %C(bold)(%an)%Creset" |
    cat -

编辑

| cat - 不仅适用于 git,而且在每个使用情况下都可以使用,当您有一个分页器并且想要打印到 STDOUT 时。


添加了关于 | cat - 的说明。 - Gilles Quénot
太棒了!就是这个!但我不明白为什么。 "cat -" 到底是在做什么?为什么它会覆盖分页器? - xero
1
它强制STDOUT通过cat传递 - Gilles Quénot
哦,我明白了!我错过了你将所有的git log 导入 cat的事实!谢谢!!! - xero
2
这会创建一个不必要的额外进程,而重置PAGER变量则不需要。 - Diego Torres Milano
为什么要搞环境变量,如果你可以在命令中直接指定不需要分页器呢? - eis

2
在你的脚本中设置:
export PAGER=

这会起到作用。


我在shebang行和while循环中尝试过了,但没有成功。实际上,它看起来根本没有任何效果。我尝试将其设置为nothing、less、more和askodjaskdlj(我认为应该会导致错误),但结果并没有任何变化。 - xero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接