Ste*_* Lu 57 unix git io shell terminal
编辑:
我想建议解析颜色是一个普遍错误的想法.
我想要它的部分原因是我可以解析它并在我自己的脚本输出中传递它.这是......好吧,但是使用瓷器或其他一些东西可能更安全,并自己重新制作彩色部件!
原始答案如下.
我喜欢看颜色,因为我的脚本足够强大(到目前为止)处理颜色代码.看起来我确实反对这里,但老实说,我不知道在脚本中解析转义代码之类的东西是多么重要.如果颜色有助于交互式使用,为什么它们不会帮助我使用脚本,我可能会聚合数据并处理比我手动更多的数据?颜色不是更重要吗?
无论如何,我有一个简洁的小shell脚本我写的munges git status
输出,我只是想让这个脚本保持颜色完好无损.我的全局git配置已设置,以便更改和未跟踪文件的列表在git状态中显示为彩色.不幸的git diff
是git status
,我没有找到强制颜色的选项.
非常清楚,这就是问题所在:
$ git status
Run Code Online (Sandbox Code Playgroud)
产生完美的输出,但(摘自我的脚本如下)
git status | sed "s/^#/\x1b[34m#[0m/"
Run Code Online (Sandbox Code Playgroud)
不产生彩色git status
输出,你甚至可以看到我明确地将前导哈希字符转换为蓝色,因为它有助于突出显示我脚本输出的不同区域.
有谁知道如何让它褪色?是否有可以使用的标准程序可以用作"假终端"STDIN/STDOUT管道?我实际上也在研究一个pty伪终端工具,所以我当然可以为此目的使用它,但它是一个相当苛刻的解决方案(并没有准备好使用,因为我还没有完成构建它).
joe*_*dle 89
为避免更改git配置,您可以通过传递config变量来为当前命令执行此操作-c
:
git -c color.status=always status | less -REX
Run Code Online (Sandbox Code Playgroud)
该变量仅适用于该status
命令.为diff
,show
并且log
该变量是color.ui
:
git -c color.ui=always diff | less -REX
Run Code Online (Sandbox Code Playgroud)
请注意,-c
必须成为之前的status
或diff
论点,而不是之后.
Ste*_* Lu 20
编辑:
我想强烈建议解析颜色是一个普遍错误的想法.
我想要它的部分原因是我可以解析它并在我自己的脚本输出中传递它.这是......好吧,但是使用瓷器或其他一些东西可能更安全,并自己重新制作彩色部件!
原始答案如下.
在提问之后,我一直很快找到答案.与思考问题的时间有关,可以写出来,制定更好的方法来解决问题.无论如何,解决方案就是这样
git config color.status always
Run Code Online (Sandbox Code Playgroud)
我认为通用解决方案涉及expect
或pty
强制任何需要它的程序认为它们在终端上.
归档时间: |
|
查看次数: |
11202 次 |
最近记录: |