从Mac OS X终端复制彩色输出


37

我在终端中看到了彩色的输出。

终端有一个“将文本导出为”命令,但是它保存了没有颜色的纯文本文件。复制和粘贴相同。

您知道保存终端输出(包括颜色)的方法吗?


如果这对您很重要,请通过apple.com/feedback/macosx.html(“应用程序/实用程序”反馈区域)或developer.apple.com/bugreporter(需要注册免费的开​​发人员帐户)告知Apple 。
克里斯·佩奇

终端现在在下提供了基本Cmd-c复制命令的选项列表Edit -> Copy Special,您可以在其中在纯文本和富文本选项之间进行切换。
约书亚·戈德堡

Answers:


12

看来,如果您在终端中选择文本,然后将其复制,然后将其粘贴到支持富文本的应用程序(例如,邮件,TextEdit,Word)中,则将保留文本颜色。

看起来在Mail和TextEdit中,终端的背景色也被粘贴了。在Word中,事实并非如此。我不确定如何解释这种差异。


您正在使用哪个版本的OS X?这不适用于10.7.4。
通配符

1
@Wildcard对我来说适用于10.11.3。我不记得我写这篇文章时正在使用哪个版本
Max Nanasy

1
我在使用常规“复制”粘贴到邮件时遇到了麻烦-颜色丢失了-但是当我使用“编辑”->“特殊复制”->“无背景色复制”(无论如何,我还是很喜欢)时,它可以工作。它甚至可以与Option-Drag一起使用来创建矩形选择。(10.12.6)
约书亚·戈德堡

31

张贴问题如何使自己的创造力大为惊奇。

我可以打开“打印”对话框并保存为PDF,然后从PDF复制彩色输出。

此外,iTerm2终端应用程序还具有CMDOPTC使用格式复制的快捷方式。


1
当在Keynote演示中创建终端示例时,此解决方案非常适合维护彩色输出。谢谢!
beausmith 2011年

1
@Wojtek:不客气,尽管当您不接受我的回答时,这花了我一点名声... ;-)
martineau 2012年

为iTerm2快捷键+1!为什么甚至没有这么少???
Per Lundberg

1
那……绝对是很久以来最有用的发现了!!!
haavee '17

如果您⌘ + ⌥ + C来自iTerm2,请打开Keynote,然后将其粘贴,它将作为表数据导入。我还没有弄清楚如何以一种有用的方式格式化数据,但是那里有潜力。
凯文·索特尔

8

您可以尝试将彩色输出粘贴到剪贴板上,如下所示:

% command_which_produces_colors | pbcopy -prefer rtf

这会将一些rtf(可能是彩色和格式化)的东西放到macOS的粘贴板上。然后,您可以使用任何其他可理解富文本格式的文件来访问剪贴板。

这显然不同于“用鼠标选择”,但也许值得一试。


不适合上班。第一个问题是command_which_produces_colors注意到它没有打印到控制台,因此跳过了颜色。我仍然可以强制其中一些打印颜色,因此以下命令将颜色输出到终端:CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | tee但是pbcopy不复制任何颜色:CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | pbcopy -prtcopy / pbpaste命令首选rtf +1。将长文件复制到剪贴板非常好:“ pbcopy <longfile.txt”
Wojtek Kruszewski

1
当我尝试此操作时,如果command_which_produces_colors生成ANSI代码,则pbcopy -Prefer rtf只需复制包含ANSI代码的文本即可(例如,它复制[0;34mText为blue Text)。似乎需要将ANSI代码转换为RTF作为中间步骤。
Max Nanasy

8

根据@akira的回答,我得出以下结论:

  1. 下载源码包ansifilter
  2. 请按照INSTALL下的说明构建和安装ansifilter
  3. <command that produces colors> | ansifilter --rtf | pbcopy -Prefer rtf
    • 您可能需要传递参数以<command that produces colors>强制其产生颜色,即使它的输出是通过管道传递的,例如ls --color=always,也不仅仅是ls
  4. 然后,您可以粘贴到支持RTF的应用程序中(例如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”应用程序。具有相同功能的实用程序文件夹,还有一些额外的功能,例如延迟。

更新资料

在Snow Leopard(10.6.8)中,默认的屏幕截图格式是png而不是jpg,尽管可以使用免费的第三方TinkerTool首选项设置实用程序将其更改为许多其他格式(包括pdf)。


9
.jpg有点不如“纯”文本好。
akira

3
+1是鲜为人知的选择区域快捷方式。
丹尼尔·贝克

@akira:OP想要颜色-除非您计算嵌入的ANSI转义序列,否则您不能以纯文本格式进行操作-并且需要像终端仿真器一样对它们进行解释的内容,但随后您需要原来的问题。
martineau 2011年

2
@martineau:当您从浏览器或从word或从xyz复制时,根据剪贴板的功能,颜色会通过标记(例如,富文本或html)保存。并且,根据接收到此类标记摘要的应用程序,它们可以显示颜色和文字。终端接收到ascii转义序列,正确,但是仅仅因为它接收到ascii转义序列并不意味着它必须a)存储它们(例如,认为html-terminal)b)它可以通过多种方式增强所选文本(您可以一次将不同的mime类型放在一个好的剪贴板中)。
akira

3
@akira JPG 对于诸如屏幕快照之类的图像格式而言,确实是个糟糕的选择。大面积的单色和锐利的单个像素线等遍布整个区域。幸运的是,Apple并不那么傻,它保存的文件是PNG。lbrandy.com/blog/2008/10/my-first-and-last-webcomic
rjmunro 2012年

0

我这样做的方法是通过出色的Textmate 2应用程序。

  1. 从R图形窗口复制
  2. 粘贴到一个空的textmate文档中
  3. 将文档类型更改为R Console或首选R
  4. 使用带样式的复制项(shift-cmd-c)
  5. 粘贴到邮件应用程序撰写窗口中

我必须说,如果shift-cmd-c直接在R控制台窗口中工作会很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.