Copiar saída colorida do terminal Mac OS X

37

Vejo uma saída bem colorida no meu terminal.

O terminal possui um comando "Exportar texto como", mas salva um arquivo de texto sem as cores. Mesmo com copiar e colar.

Você conhece uma maneira de salvar a saída do terminal, incluindo cores?

Wojtek Kruszewski
fonte
Se isso for importante para você, informe a Apple via apple.com/feedback/macosx.html (área de feedback de Aplicativos / Utilitários) ou developer.apple.com/bugreporter (requer registro em uma conta de desenvolvedor gratuita).
Chris Página
O Terminal agora possui uma lista de opções para o comando básico de cópia Cmd-c Edit -> Copy Special, em que você pode alternar entre as opções Texto sem formatação e Rich Text.
21418 Joshua Goldberg #

Respostas:

12

Parece que, se você selecionar o texto no Terminal, copiá-lo e colá-lo em um aplicativo compatível com rich text (por exemplo, Mail, TextEdit, Word), a cor do texto será preservada.

Parece que no Mail e no TextEdit, a cor de fundo do terminal também é colada; no Word, não é. Não sei como explicar essa discrepância.

Max Nanasy
fonte
Qual versão do OS X você está usando? Isso não funciona no 10.7.4.
Curinga
1
@Wildcard Funciona para mim no 10.11.3. Eu não me lembro qual a versão que eu estava usando quando eu escrevi isso
Nanasy Max
1
Eu tive problemas ao usar o Copy regular para colar no Mail - as cores foram perdidas -, mas funcionou quando usei Editar -> Copiar Especial -> Copiar Sem Cor de Fundo (o que eu preferia mesmo). Ele até trabalhou com a opção-arrastar para criar uma seleção retangular. (10.12.6)
Joshua Goldberg
31

Incrível como postar uma pergunta aumenta a criatividade.

Posso abrir a caixa de diálogo "Imprimir", salvar em PDF e copiar a saída colorida do PDF.

O aplicativo de terminal iTerm2 também possui um atalho CMDOPTCque copia com formatação.

Wojtek Kruszewski
fonte
1
Essa solução é perfeita para manter a saída colorida ao criar exemplos de terminal em uma apresentação do Keynote. THX!
precisa saber é o seguinte
1
@Wojtek: Você é bem-vindo, mesmo que me custou um pouco de reputação quando você não aceito a minha resposta ... ;-)
martineau
+1 para o atalho do iTerm2! Por que isso nem sequer está na moda?
Per Lundberg
1
Esse ... é definitivamente o achado mais útil desde há muito tempo !!!
haavee
Se você, ⌘ + ⌥ + Cno iTerm2, abrir o Keynote e colá-lo, ele será importado como dados da tabela. Ainda não descobri como formatar os dados de uma maneira útil, mas há potencial lá.
21418 Kevin Suttle
8

você pode tentar colar a saída colorida na área de transferência da seguinte maneira:

% command_which_produces_colors | pbcopy -prefer rtf

que coloca algumas coisas de rtf (possivelmente coloridas e formatadas) no papelão dos macos. você pode usar qualquer outro que entenda richtext para acessar a área de transferência.

obviamente não é o mesmo que "selecione-o com o mouse", mas talvez valha a pena tentar.

akira
fonte
Não precisa trabalhar. O primeiro problema é que command_which_produces_colors percebe que não é impresso no console, portanto ignora as cores. Como posso forçar alguns deles a imprimir cores de qualquer maneira, o comando a seguir gera cores para o terminal: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | tee Mas o pbcopy não copia cores: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | pbcopy -prefer rtf +1 para comandos pbcopy / pbpaste. É ótimo para copiar arquivos longos para a área de transferência: "pbcopy <longfile.txt"
Wojtek Kruszewski
1
Quando eu tento isso, se command_which_produces_colorsproduz códigos ANSI, pbcopy -Prefer rtfcopia apenas o texto, incluindo os códigos ANSI (por exemplo, copia [0;34mTextpara azul Text). Parece que a conversão dos códigos ANSI para RTF pode ser necessária como uma etapa intermediária.
precisa saber é o seguinte
8

Com base na resposta de @ akira , vim com o seguinte:

  1. Faça o download do pacote fonte para ansifilter
  2. Siga as instruções em INSTALAR para criar e instalar o ansifilter
  3. Corre <command that produces colors> | ansifilter --rtf | pbcopy -Prefer rtf
    • Pode ser necessário passar argumentos para <command that produces colors>forçá-lo a produzir cores, mesmo que sua saída seja canalizada, por exemplo, em ls --color=alwaysvez de apenasls
  4. Você pode colar em um aplicativo que suporte rich text (por exemplo, Mail, TextEdit, Word)
Max Nanasy
fonte
2

O OS X possui vários atalhos de teclado (teclas de atalho) para copiar a tela. Isso salvará as capturas de tela como arquivos jpg na área de trabalho. Aqui está uma lista deles:

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 

Há também um aplicativo "Grab" localizado em Aplicativos | Pasta Utilitários que faz o mesmo trabalho, além de alguns recursos extras, como atraso.

Atualizar

No Snow Leopard (10.6.8), o formato de captura de tela padrão é png, não jpg, embora possa ser alterado para qualquer um dos muitos - inclusive pdf - usando o utilitário de configurações de preferência gratuito TinkerTool de terceiros .

Martineau
fonte
9
um .jpg não é tão bom quanto o texto "puro".
akira
3
+1 nos atalhos menos conhecidos da área de seleção.
Daniel Beck
@akira: O OP quer cores - algo que você não pode fazer em um formato de texto simples, a menos que conte as seqüências de escape ANSI incorporadas - e isso precisaria de algo para interpretá-las como um emulador de terminal, mas você voltará para o problema original.
martineau
2
@martineau: dependendo dos recursos da área de transferência, as cores são salvas pela marcação (por exemplo, richtext ou html) quando você copia de um navegador, da palavra ou do xyz. e, dependendo do aplicativo que recebe esses trechos marcados, eles podem mostrar as cores e o texto bastante bem. o terminal recebe seqüências de escape ascii, correto, mas apenas porque ele recebe sequências de escape ascii não significa que precisa: a) armazená-las (por exemplo, pense em html-terminal) b) pode aprimorar o texto selecionado de várias maneiras (você pode coloque diferentes tipos de mímica em uma boa área de transferência ao mesmo tempo).
akira
3
@akira A JPG é um muito má escolha de formato de imagem para algo como um screenshot. Grandes áreas de cor única, linhas nítidas de pixel único, etc. Felizmente, a Apple não é tão boba e o arquivo que salva é um PNG. lbrandy.com/blog/2008/10/my-first-and-last-webcomic
rjmunro
0

A maneira como faço isso é através do excelente aplicativo Textmate 2.

  1. Copiar da janela gráfica do R
  2. Colar em um documento vazio de companheiro de texto
  3. Altere o tipo de documento para R Console ou R conforme preferencial
  4. Use o tmbundle de copiar com estilo (shift-cmd-c)
  5. Colar na janela de composição do aplicativo de correio

Devo dizer que seria bom se shift-cmd-c funcionasse diretamente na janela do console do R.

Michael Neale
fonte