bash - 在 N 个可打印字符后截断彩色线条
问题描述
我住在一个tmux
会话中。在冲浪和锤击git
树枝时,我通常在侧窗格中跟踪我最近的历史记录,其别名扩展为:
watch -cn 0.5 'git log --graph --oneline --all --color=always --decorate'
问题:长线被缠绕并破坏了可爱的彩色图形,使我不稳定!
解决方法:
一个不好的做法是截断未着色的
git-log
输出:watch -cn 0.5 'git log --graph --oneline --all --decorate | cut -c -$COLUMNS'
但我绝对需要颜色才不会失去理智;
更糟糕的是保留颜色并
cut
计算不可打印的字符:watch -cn 0.5 'git log --graph --oneline --all --color=always --decorate | cut -c -$COLUMNS'
这意味着线条被严重截断,有时甚至连在一起。
问题:是否有任何标准工具可以在 N 个可打印字符后截断行?
我会避免使用类似自写cut
的解决方案,主要是因为可移植性。
解决方案
找到的解决方案:
alias gw='watch -cn 0.5 "git log --graph --oneline --all --color=always --decorate | grep -Eo \"^(([[:cntrl:]]\[[0-9;]{,4}m)*[[:print:]]){,\$COLUMNS}\""'
推荐阅读
- nexus3 - docker 上的 Nexus sonatype/nexus3:3.17.0 告诉它只使用一个 cpu
- php - Xdebug 在 PhpStorm Ubuntu 18 PHP 中不起作用
- c# - 如何在 Scrollviewer 上为子控件禁用自动滚动
- reactjs - 如何在 React styleguidist 中将道具传递给 Readme.md 文件中的组件?
- python - 如何在不更改特定列的情况下对数据框中的数据进行重新采样?
- angular - 获取 ExpressionChangedAfterItHasBeenCheckedError
- c# - 异步ajax调用和异步c#控制器方法
- database - Access 报告数据库“不一致”
- android - 在 Android AOSP 上启用基于 TCP/IP 的 adb 调试
- python - 如何解决 - 与 192.168.XX 的连接已关闭?