Скопируйте цветной вывод с терминала Mac OS X

37

Я вижу красиво окрашенный вывод в моем терминале.

Терминал имеет команду «Экспорт текста как», но сохраняет текстовый файл без цветов. То же самое с копией и вставкой.

Знаете ли вы способ сохранить вывод терминала, включая цвета?

Войтек Крушевский
источник
Если это важно для вас, сообщите об этом Apple через apple.com/feedback/macosx.html (область отзывов «Приложения / Утилиты») или developer.apple.com/bugreporter (требуется регистрация для бесплатной учетной записи разработчика).
Крис Пейдж
Терминал теперь имеет список опций для базовой команды Cmd-c copy Edit -> Copy Special, где вы можете переключаться между обычным текстом и форматированным текстом.
Джошуа Голдберг

Ответы:

12

Похоже, что если вы выделите текст в Терминале, затем скопируете его, а затем вставите его в приложение, которое поддерживает форматированный текст (например, Mail, TextEdit, Word), тогда цвет текста будет сохранен.

Похоже, что в Mail и TextEdit также вставлен цвет фона терминала; в слове это не так. Я не уверен, как объяснить это несоответствие.

Макс Нанаси
источник
Какую версию OS X вы используете? Это не работает на 10.7.4.
Уайлдкарт
1
@Wildcard У меня работает 10.11.3. Я не помню, какую версию я использовал, когда писал это
Макс Нанаси
1
У меня были проблемы с использованием обычного Копирования для вставки в Почту - цвета были утеряны - но это работало, когда я использовал Правка -> Копировать -> Копировать без фона (что я предпочел в любом случае). Он даже работал с опцией перетаскивания, чтобы создать прямоугольное выделение. (10.12.6)
Джошуа Голдберг
31

Удивительно, как размещение вопроса повышает креативность.

Я могу открыть диалог «Печать» и сохранить в PDF, а затем скопировать цветной вывод из PDF.

Также приложение терминала iTerm2 имеет ярлык, CMDOPTCкоторый копирует с форматированием.

Войтек Крушевский
источник
1
Это решение идеально подходит для поддержки цветного вывода при создании примеров терминалов в презентации Keynote. Спасибо!
Боссмит
1
@Wojtek: Не за что, хотя это стоило мне небольшой репутации, когда вы не
приняли
+1 для ярлыка iTerm2! Почему это даже не в Meny ???
По Лундбергу
1
Это ... определенно самая полезная находка за долгое время !!!
Haavee
Если вы ⌘ + ⌥ + Cиз iTerm2 откроете Keynote и вставите его, он будет импортирован как данные таблицы. Я не совсем понял, как отформатировать данные полезным способом, но там есть потенциал.
Кевин Саттл,
8

Вы можете попробовать вставить цветной вывод в буфер обмена следующим образом:

% command_which_produces_colors | pbcopy -prefer rtf

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

это, очевидно, не то же самое, что "выбрать его с помощью мыши", но, возможно, стоит попробовать.

Акира
источник
Не похоже на работу. Первая проблема заключается в том, что command_which_produces_colors замечает, что не выводит на консоль, поэтому пропускает цвета. В любом случае я могу заставить некоторые из них печатать цвета, поэтому следующая команда выводит цвета на терминал: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | tee Но pbcopy не копирует цвета: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | pbcopy -prefer rtf +1 для команд pbcopy / pbpaste. Он отлично подходит для копирования длинных файлов в буфер обмена: «pbcopy <longfile.txt»
Войтек Крушевский,
1
Когда я пытаюсь это сделать, если command_which_produces_colorsвыдает коды ANSI, то pbcopy -Prefer rtfпросто копирует текст, включая коды ANSI (например, он копирует [0;34mTextдля синего цвета Text). Кажется, что преобразование кодов ANSI в RTF может потребоваться в качестве промежуточного этапа.
Макс Нанаси
8

Основываясь на ответе @ akira , я придумал следующее:

  1. Загрузите исходный пакет для ansifilter
  2. Следуйте инструкциям в разделе УСТАНОВКА для сборки и установки ансифильтра
  3. Бег <command that produces colors> | ansifilter --rtf | pbcopy -Prefer rtf
    • Возможно, вам придется передать аргументы, чтобы <command that produces colors>заставить его производить цвета, даже если его вывод передается по конвейеру, например, ls --color=alwaysвместоls
  4. Затем вы можете вставить в приложение, которое поддерживает форматированный текст (например, Mail, TextEdit, Word)
Макс Нанаси
источник
2

OS X имеет несколько сочетаний клавиш (горячие клавиши) для копирования экрана. Это сохранит ваши скриншоты в виде файлов jpg на рабочем столе. Вот их список:

Cmd-Shift-3                             Take snapshot of the whole screen
Cmd-Shift-4                             Take snapshot of the selected area
Cmd-Shift-4-Spacebar                    Take picture of a window
Escape                                  Cancel
Hold Spacebar after Drawing the region  Move the selected area
Hold Option                             Resize selected area
Hold Shift                              Resize selected area horizontally 
                                        or vertically 

Также в приложении есть приложение "Grab" | Папка Utilities, которая выполняет ту же работу, плюс имеет несколько дополнительных функций, таких как задержка.

Обновить

В Snow Leopard (10.6.8) форматом скриншота по умолчанию является png, а не jpg, хотя его можно изменить на любой другой, включая pdf, с помощью бесплатной сторонней утилиты настроек предпочтений TinkerTool .

Мартино
источник
9
.jpg вроде не так хорош, как "чистый" текст.
Акира
3
+1 за менее известные ярлыки для области выбора.
Даниэль Бек
@akira: OP хочет цвета - то, что вы не можете сделать в простом текстовом формате, если вы не учитываете встроенные escape-последовательности ANSI - и им нужно что-то для их интерпретации как эмулятора терминала, но затем вы вернетесь к оригинальная проблема.
Мартино
2
@martineau: в зависимости от возможностей буфера обмена цвета сохраняются по разметке (например, richtext или html) при копировании из браузера, из слова или из xyz. и, в зависимости от приложения, которое получает такие размеченные фрагменты, они могут показывать цвета и текст вполне нормально. Терминал получает escape-последовательности ascii, правильно, но только потому, что он получает escape-последовательности ascii, не означает, что он должен a) сохранять их (например, думать, html-терминал) b) он может улучшить выделенный текст многими способами (вы можете поместите разные типы пантомимы в хороший буфер обмена сразу).
Акира
3
@akira JPG - очень плохой выбор формата изображения для чего-то вроде скриншота. Большие области одного цвета и четкие однопиксельные линии и т. Д. На всем протяжении. К счастью, Apple не настолько глупа, и файл, который она сохраняет, представляет собой PNG. lbrandy.com/blog/2008/10/my-first-and-last-webcomic
rjmunro
0

Я делаю это с помощью отличного приложения Textmate 2.

  1. Копировать из графического окна R
  2. Вставить в пустой текстовый документ
  3. Измените тип документа на Консоль R или R как предпочтительный
  4. Используйте tmbundle в стиле копирования (shift-cmd-c)
  5. Вставить в окно создания почтового приложения

Я должен сказать, что было бы неплохо, если бы shift-cmd-c работал прямо в окне консоли R.

Майкл Нил
источник