![为什么tldr | xclip 输出看起来像时间戳的转义码,如何删除它?](https://linux22.com/image/197386/%E4%B8%BA%E4%BB%80%E4%B9%88tldr%20%7C%20xclip%20%E8%BE%93%E5%87%BA%E7%9C%8B%E8%B5%B7%E6%9D%A5%E5%83%8F%E6%97%B6%E9%97%B4%E6%88%B3%E7%9A%84%E8%BD%AC%E4%B9%89%E7%A0%81%EF%BC%8C%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E5%AE%83%EF%BC%9F.png)
问题
我想将 tldr 的输出复制到剪贴板,然后将其粘贴到文本编辑器。
我执行:tldr pwd | xclip -sel clip
当我从剪贴板粘贴时,我得到:
pwd
[0mPrint name of current/working directory.More information: https://www.gnu.org/software/coreutils/pwd.
- [23;22;24;25;32mPrint the current directory:
[23;22;24;25;33m pwd
[0m
- [23;22;24;25;32mPrint the current directory, and resolve all symlinks (i.e. show the "physical" path):
[23;22;24;25;33m pwd -P
[0m[0m
我想摆脱时间戳,也想知道为什么会发生这种情况。
观察
tldr pwd
(不传递到 xclip)不显示时间戳man pwd | xclip -sel clip
粘贴时不包含时间戳- 所以,只有当将 tldr 传递给 xclip 时,我才会发现这种情况发生
- 时间戳看起来像转义码
环境
- 静态主机名:debian
- 图标名称:电脑桌面
- 机箱: 台式
- 操作系统:Debian GNU/Linux 10 (buster)
- 内核:Linux 4.19.0-17-amd64
- 架构:x86-64
答案1
这些不是时间戳。它们是颜色代码。
根据v0.91 变更日志,tldr
在 2021 年 7 月合并了一项禁用颜色的功能,可以通过设置NO_COLOR
环境变量或使用新的--no-color
命令行选项。
不幸的是,v0.91tldr
是很多比 Debian 当前版本 (0.6.4) 更新......因此,要么卸载 Debian 软件包并自行编译/安装它(*),要么提交错误报告,要求打包新版本。或两者。
这才是长期的解决方案。在短期内,使用sed
或某种方法从输出中删除颜色代码(如 @GMaster 的答案)可能是最好的选择。
(*) 我通常不会建议从程序的打包版本切换到自编译版本(因为这样做可能会导致兼容性问题或将来的升级问题),但是硬编码的颜色代码可以'不被禁用是 UI 令人厌恶的。
答案2
这些是由 生成的颜色代码tldr
。不幸的tldr
是没有任何选项可以关闭颜色。但您可以传递tldr
输出sed
并去掉颜色代码。尝试这个:
tldr pwd | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g' | xclip -sel clip
或者,基于提到的 jpa 包:
# install colorized-logs package (for ubuntu)
sudo apt install colorized-logs
tldr pwd | ansi2txt | xclip -sel clip