為什麼tldr | xclip 輸出看起來像時間戳記的轉義碼,如何刪除它?

為什麼tldr | xclip 輸出看起來像時間戳記的轉義碼,如何刪除它?

問題

我想將 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

相關內容