Copie la salida en color del terminal Mac OS X

37

Veo una salida muy bien coloreada en mi terminal.

El terminal tiene un comando "Exportar texto como" pero guarda un archivo de texto sin los colores. Lo mismo con copiar y pegar.

¿Conoces una forma de guardar la salida del terminal, incluidos los colores?

Wojtek Kruszewski
fuente
Si esto es importante para usted, infórmele a Apple a través de apple.com/feedback/macosx.html (área de comentarios de Aplicaciones / Utilidades) o developer.apple.com/bugreporter (requiere registrarse para obtener una cuenta de desarrollador gratuita).
Chris Page
Terminal ahora tiene una lista de opciones para el comando básico de copia Cmd-c Edit -> Copy Special, donde puede alternar entre las opciones de Texto sin formato y texto enriquecido.
Joshua Goldberg el

Respuestas:

12

Parece que si selecciona texto en la Terminal, luego lo copia, luego lo pega en una aplicación que admite texto enriquecido (por ejemplo, Correo, Edición de texto, Word), entonces el color del texto se conservará.

Parece que en Mail y TextEdit, el color de fondo del terminal también se pega; en Word, no lo es. No estoy seguro de cómo explicar esta discrepancia.

Max Nanasy
fuente
¿Qué versión de OS X estás usando? Esto no funciona en 10.7.4.
Comodín el
1
@Wildcard Funciona para mí en 10.11.3. No recuerdo qué versión estaba usando cuando escribí esto
Max Nanasy
1
Tuve problemas para usar la copia normal para pegar en el correo; los colores se perdieron, pero funcionó cuando usé Editar -> Copia especial -> Copiar sin color de fondo (que preferí de todos modos). Incluso funcionó con la opción de arrastrar para crear una selección rectangular. (10.12.6)
Joshua Goldberg el
31

Es sorprendente cómo publicar una pregunta aumenta la creatividad.

Puedo abrir el cuadro de diálogo "Imprimir" y guardar en PDF y luego copiar la salida en color del PDF.

Además, la aplicación de terminal iTerm2 tiene un acceso directo CMDOPTCque se copia con el formato.

Wojtek Kruszewski
fuente
1
Esta solución es perfecta para mantener la salida en color al crear ejemplos de terminal en una presentación de Keynote. ¡Gracias!
beausmith
1
@Wojtek: De nada, aunque me costó un poco de reputación cuando no
aceptaste
¡+1 para el acceso directo iTerm2! ¿Por qué eso ni siquiera en el meny?
Según Lundberg el
1
¡Ese ... es definitivamente el hallazgo más útil desde hace mucho tiempo!
haavee
Si es ⌘ + ⌥ + Cde iTerm2, abra Keynote y péguelo, lo importará como datos de la tabla. Todavía no he descubierto cómo formatear los datos de una manera útil, pero hay potencial allí.
Kevin Suttle
8

puede intentar pegar la salida de color en el portapapeles de esta manera:

% command_which_produces_colors | pbcopy -prefer rtf

que pone algunas cosas rtf (posiblemente coloreadas y formateadas) en el cartón de macos. luego puede usar cualquier otro que entienda richtext para acceder al portapapeles.

esto obviamente no es lo mismo que "seleccionarlo con el mouse" pero quizás valga la pena intentarlo.

akira
fuente
No seme a trabajar. El primer problema es que command_which_produces_colors se da cuenta de que no se imprime en la consola, por lo que omite los colores. De todos modos, puedo forzar a algunos de ellos a imprimir colores, por lo que el siguiente comando genera colores en el terminal: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | tee Pero pbcopy no copia colores: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | pbcopy -prefer rtf +1 para los comandos pbcopy / pbpaste. Es genial para copiar archivos largos al portapapeles: "pbcopy <longfile.txt"
Wojtek Kruszewski el
1
Cuando intento esto, si command_which_produces_colorsproduce códigos ANSI, pbcopy -Prefer rtfsimplemente copia el texto que incluye los códigos ANSI (por ejemplo, copia [0;34mTextpara azul Text). Parece que puede ser necesario convertir los códigos ANSI a RTF como un paso intermedio.
Max Nanasy
8

Basado en la respuesta de @ akira , se me ocurrió lo siguiente:

  1. Descargue el paquete fuente para ansifilter
  2. Siga las instrucciones en INSTALAR para construir e instalar ansifilter
  3. correr <command that produces colors> | ansifilter --rtf | pbcopy -Prefer rtf
    • Es posible que deba pasar argumentos para <command that produces colors>forzarlo a producir colores a pesar de que su salida está canalizada, por ejemplo, en ls --color=alwayslugar de solols
  4. Luego puede pegar en una aplicación que admita texto enriquecido (por ejemplo, Correo, Edición de texto, Word)
Max Nanasy
fuente
2

OS X tiene varios métodos abreviados de teclado (teclas de acceso rápido) para copiar la pantalla. Estos guardarán sus capturas de pantalla como archivos jpg en el escritorio. Aquí hay una lista de ellos:

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 

También hay una aplicación "Grab" ubicada en Aplicaciones | Carpeta de utilidades que hace el mismo trabajo, además tiene algunas características adicionales como retraso.

Actualizar

En Snow Leopard (10.6.8), el formato de captura de pantalla predeterminado es png no jpg, aunque puede cambiarse a cualquiera de los muchos otros, incluido el pdf, utilizando la utilidad de configuración de preferencias TinkerTool de terceros .

Martineau
fuente
99
un .jpg no es tan agradable como el texto "puro".
akira
3
+1 para los atajos menos conocidos para el área de selección.
Daniel Beck
@akira: El OP quiere colores, algo que no puede hacer en formato de texto plano a menos que cuente las secuencias de escape ANSI incrustadas , y esos necesitarían algo para interpretarlos como un emulador de terminal, pero luego vuelve a El problema original.
Martineau
2
@martineau: dependiendo de las capacidades del portapapeles, los colores se guardan mediante marcado (p. ej., texto enriquecido o html) cuando se copia desde un navegador o desde Word o desde xyz. y, dependiendo de la aplicación que reciba dichos fragmentos marcados, pueden mostrar los colores Y el texto bastante bien. el terminal recibe secuencias de escape ascii, correcto, pero solo porque recibe secuencias de escape ascii no significa que tenga que a) almacenarlas (por ejemplo, piense en html-terminal) b) puede mejorar el texto seleccionado de muchas maneras (puede poner diferentes tipos de mimo en un buen portapapeles a la vez).
akira
3
@akira Un JPG es una muy mala elección de formato de imagen para algo así como una captura de pantalla. Grandes áreas de un solo color y líneas nítidas de un solo píxel, etc., por todas partes. Afortunadamente, Apple no es tan tonta y el archivo que guarda es un PNG. lbrandy.com/blog/2008/10/my-first-and-last-webcomic
rjmunro
0

La forma en que hago esto es a través de la excelente aplicación Textmate 2.

  1. Copiar desde la ventana gráfica R
  2. Pegar en un documento de textmate vacío
  3. Cambie el tipo de documento a R Console o R como prefiera
  4. Use el tmbundle copiar con estilo (shift-cmd-c)
  5. Pegar en la ventana de redacción de la aplicación de correo

Debo decir que sería bueno si shift-cmd-c funcionara directamente en la ventana de la consola R.

Michael Neale
fuente