Почему tldr | xclip выводит escape-коды, похожие на временную метку, и как их удалить?

Почему tldr | xclip выводит escape-коды, похожие на временную метку, и как их удалить?

Проблема

Я хочу скопировать вывод 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 года была добавлена ​​функция отключения цветов путем установки NO_COLORпеременной среды или использования нового --no-colorпараметра командной строки.

К сожалению, v0.91 tldrизмногоновее текущей версии в Debian (0.6.4)....так что либо удалите пакет Debian и скомпилируйте/установите его самостоятельно(*), либо отправьте отчет об ошибке с просьбой упаковать новую версию. Или и то, и другое.

Это долгосрочное решение. В краткосрочной перспективе использование sedили что-то еще для удаления цветовых кодов из вывода (как в ответе @GMaster) — это, вероятно, лучшее, что вы можете сделать.

(*) Обычно я не предлагаю переходить с упакованной версии программы на самокомпилированную версию (потому что это, скорее всего, вызовет проблемы совместимости или проблемы с обновлением в будущем), но жестко заданные цветовые коды, которые нельзя отключить, — это мерзость пользовательского интерфейса.

решение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

Связанный контент