获取对话框--gauge的git clone进度

时间:2014-10-16 18:23:47

标签: git bash awk dialog progress

我正在尝试使用对话框编写一个bash脚本,如果它涉及克隆一些git存储库,那么就是一部分。

我想使用dialog --gauge来显示进度条,并显示--tailbox以显示git最多的内容。

到目前为止,我没有运气将git中的进度信息转换为对话框可以理解的表单。

这是我到目前为止所得到的:

git clone git@github.com:really-bit-git-repo output-dir --progress 2>&1 | cat > /tmp/gitprocfile &
cat /tmp/gitprocfile | grep "[0-9]\{1,2\}%" | awk '{print $7}' | dialog --gauge "Progress" 7 50 

我最终得到了/ tmp / gitprocfile中的文件,看起来像这样

Cloning into 'output-dir'...
remote: Counting objects: 103668, done.[K
remote: Compressing objects:   0% (1/23688)   [K
remote: Compressing objects:   1% (237/23688)   [K
remote: Compressing objects:   2% (474/23688)   [K
remote: Compressing objects:   3% (711/23688)   [K
remote: Compressing objects:   4% (948/23688)   [K
remote: Compressing objects:   5% (1185/23688)   [K
remote: Compressing objects:   6% (1422/23688)   [K
remote: Compressing objects:   7% (1659/23688)   [K
remote: Compressing objects:   8% (1896/23688)   [K
remote: Compressing objects:   9% (2132/23688)   [K
remote: Compressing objects:  10% (2369/23688)   [K
remote: Compressing objects:  11% (2606/23688)   [K
remote: Compressing objects:  12% (2843/23688)   [K
remote: Compressing objects:  13% (3080/23688)   [K
remote: Compressing objects:  14% (3317/23688)   [K
remote: Compressing objects:  15% (3554/23688)   [K
remote: Compressing objects:  16% (3791/23688)   [K
remote: Compressing objects:  17% (4027/23688)   [K
remote: Compressing objects:  18% (4264/23688)   [K
remote: Compressing objects:  19% (4501/23688)   [K
remote: Compressing objects:  20% (4738/23688)   [K
remote: Compressing objects:  21% (4975/23688)   [K
remote: Compressing objects:  22% (5212/23688)   [K
remote: Compressing objects:  23% (5449/23688)   [K
remote: Compressing objects:  24% (5686/23688)   [K
remote: Compressing objects:  25% (5922/23688)   [K
remote: Compressing objects:  26% (6159/23688)   [K
remote: Compressing objects:  27% (6396/23688)   [K
remote: Compressing objects:  28% (6633/23688)   [K
remote: Compressing objects:  29% (6870/23688)   [K
remote: Compressing objects:  30% (7107/23688)   [K
remote: Compressing objects:  31% (7344/23688)   [K
remote: Compressing objects:  32% (7581/23688)   [K
remote: Compressing objects:  33% (7818/23688)   [K
remote: Compressing objects:  34% (8054/23688)   [K
remote: Compressing objects:  35% (8291/23688)   [K
remote: Compressing objects:  36% (8528/23688)   [K
remote: Compressing objects:  37% (8765/23688)   [K
remote: Compressing objects:  38% (9002/23688)   [K
remote: Compressing objects:  39% (9239/23688)   [K
remote: Compressing objects:  40% (9476/23688)   [K
remote: Compressing objects:  41% (9713/23688)   [K
remote: Compressing objects:  42% (9949/23688)   [K
remote: Compressing objects:  43% (10186/23688)   [K
remote: Compressing objects:  44% (10423/23688)   [K
remote: Compressing objects:  45% (10660/23688)   [K
remote: Compressing objects:  46% (10897/23688)   [K
remote: Compressing objects:  47% (11134/23688)   [K
remote: Compressing objects:  48% (11371/23688)   [K
remote: Compressing objects:  49% (11608/23688)   [K
remote: Compressing objects:  50% (11844/23688)   [K
remote: Compressing objects:  51% (12081/23688)   [K
remote: Compressing objects:  52% (12318/23688)   [K
remote: Compressing objects:  53% (12555/23688)   [K
remote: Compressing objects:  54% (12792/23688)   [K
remote: Compressing objects:  55% (13029/23688)   [K
remote: Compressing objects:  56% (13266/23688)   [K
remote: Compressing objects:  57% (13503/23688)   [K
remote: Compressing objects:  58% (13740/23688)   [K
remote: Compressing objects:  59% (13976/23688)   [K
remote: Compressing objects:  60% (14213/23688)   [K
remote: Compressing objects:  61% (14450/23688)   [K
remote: Compressing objects:  62% (14687/23688)   [K
remote: Compressing objects:  63% (14924/23688)   [K
remote: Compressing objects:  64% (15161/23688)   [K
remote: Compressing objects:  65% (15398/23688)   [K
remote: Compressing objects:  66% (15635/23688)   [K
remote: Compressing objects:  67% (15871/23688)   [K
remote: Compressing objects:  68% (16108/23688)   [K
remote: Compressing objects:  69% (16345/23688)   [K
remote: Compressing objects:  70% (16582/23688)   [K
remote: Compressing objects:  71% (16819/23688)   [K
remote: Compressing objects:  72% (17056/23688)   [K
remote: Compressing objects:  73% (17293/23688)   [K

进度条位于0%。

我是否遗漏了一些关于如何将数据从git传输/ grep / awk到对话框中的问题,或者这种方法是否无法正常工作?

1 个答案:

答案 0 :(得分:2)

我认为我的评论实在太长,而且不清楚这是我的评论:

git clone git@github.com:really-bit-git-repo output-dir --progress 2>&1 | cat > /tmp/gitprocfile &

调用git并将输出写入文件中,此处不需要cat。

cat /tmp/gitprocfile | grep "[0-9]\{1,2\}%" | awk '{print $7}' | dialog --gauge "Progress" 7 50 

在prvious命令之后,显示文件一个用cat和点grep等等。所以你只得到文件的内容一次......

如果想要结束文本输出,我会这样做:

 git clone git@github.com:really-bit-git-repo output-dir --progress 2>&1 | tee /tmp/gitprocfile | grep "[0-9]\{1,2\}%" | awk '{print $7}' | dialog --gauge "Progress" 7 50

如果对话框的语句不是gitcommand:

在终端1:

echo '' > /tmp/gitprocfile; git clone git@github.com:really-bit-git-repo output-dir --progress 2>&1 >> /tmp/gitprocfile &

在终端2:

tail -f /tmp/gitprocfile | grep "[0-9]\{1,2\}%" | awk '{print $7}' | dialog --gauge "Progress" 7 50 

我不习惯对话,但至少我确定你的尝试不会在更改时重新加载文件。