7

我正在尝试编写一个“实时 git log”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 的帖子——但我的环境中没有开发控制台)

系统: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 是个人品味。将其更改为适合您和终端屏幕尺寸的任何数字。

4

3 回答 3

23

Adding --no-pager is the way to go.:

git --no-pager log

So the full command would be

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"
于 2012-10-01T16:16:30.627 回答
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

于 2012-10-01T16:15:35.333 回答
2

设置,在您的脚本中:

export PAGER=

会成功的

于 2012-10-01T16:12:51.653 回答