-1

似乎watch没有解释隐含的“重置”颜色代码^[m。它确实解释了显式代码^[0m

有谁知道如何解决这一问题?或者这听起来像一个错误,我需要联系的维护者watch

为什么我要问:

我正在使用watchwith git log,并git log使用隐式重置^[m

例子:

$ watch -c git log --oneline --decorate --source --graph --color=always

显示问题

它应该是这样的:

$ git log --oneline --decorate --source --graph --color=always

预期的

调查

如果我们不包括-c( --color) 选项watch,我们可以看到有 ANSI 转义码:

Every 2.0s: git log --oneline --decorate --source --graph --color=always                                                                                                                                                                               Fri Sep 28 08:17:42 2018

* ^[33m9db218b^[m       HEAD^[33m (^[m^[1;36mHEAD^[m^[33m -> ^[m^[1;32mmaster^[m^[33m, ^[m^[1;33mtag: v0.8.0b5^[m^[33m, ^[m^[1;31morigin/master^[m^[33m, ^[m^[1;31morigin/HEAD^[m^[33m)^[m Doc updates for v0.8.0b5 release
* ^[33mfd342d9^[m       HEAD Update changelog [ci skip]
* ^[33md1af865^[m       HEAD Update changelog
*   ^[33m70889fa^[m     HEAD Merge branch 'testing-updates' into 'master'

上面的例子中发生了很多事情——让我们简化一下:

证明我们正确地逃避了事情:

$ echo -e "\033[33myellow\033[mnormal"

简单的回显颜色转义

发送到watch

注意:-earg onecho没有被解析,因为我们引用了一些东西。watch现在处理颜色代码。

$ watch -c 'echo -e "\033[33myellow\033[mnormal"'

手表因重置代码而失败

-c_watch

$ watch 'echo -e "\033[33myellow\033[mnormal"'
Every 2.0s: echo -e "\033[33myellow\033[mnormal"      Fri Sep 28 08:29:26 2018

-e ^[33myellow^[mnormal

这看起来和预期的一样。

使用显式^[0m重置代码有效

$ watch -c 'echo -e "\033[33myellow\033[0mnormal"'

在此处输入图像描述

版本

主要在 WSL 下测试:Window 10 Pro, v1803, build 17134.286

$ watch -v
watch from procps-ng 3.3.10
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial
$ uname -a
Linux redacted-hostname 4.4.0-17134-Microsoft #285-Microsoft Thu Aug 30 17:31:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux
$ git --version
git version 2.7.4

还使用 PuTTY 对 linux 机器进行了测试。与上面相同的版本信息,只是不使用 WSL。

4

1 回答 1

0

看起来它已在 3.3.12 版本中修复procps,其中包含watch

https://gitlab.com/procps-ng/procps/issues/12

https://gitlab.com/procps-ng/procps/commit/6fcb690099bd681930946492e8a93c61e82249d8

于 2018-09-28T16:07:05.153 回答