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 (バスター)
  • カーネル: 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

関連情報