Copier la sortie couleur du terminal Mac OS X

37

Je vois une sortie bien colorée dans mon terminal.

Le terminal dispose d'une commande "Exporter le texte sous" mais enregistre un fichier en texte brut sans les couleurs. Même chose avec copier-coller.

Connaissez-vous un moyen de sauvegarder la sortie du terminal, y compris les couleurs?

Wojtek Kruszewski
la source
Si cela est important pour vous, veuillez informer Apple via apple.com/feedback/macosx.html (Zone de commentaires Applications / Utilitaires) ou developer.apple.com/bugreporter (vous devez vous inscrire pour obtenir un compte développeur gratuit).
Chris Page
Terminal dispose maintenant d’une liste d’options pour la commande de base Cmd-c copy dans Edit -> Copy Speciallaquelle vous pouvez basculer entre les options Texte brut et Texte enrichi.
Joshua Goldberg

Réponses:

12

Il semble que si vous sélectionnez du texte dans le terminal, que vous le copiez, puis le collez dans une application prenant en charge le texte enrichi (par exemple, Mail, TextEdit, Word), la couleur du texte sera préservée.

Il semble que dans Mail et TextEdit, la couleur d’arrière-plan du terminal soit également collée; dans Word, ce n'est pas. Je ne suis pas sûr de savoir comment expliquer cette différence.

Max Nanasy
la source
Quelle version d'OS X utilisez-vous? Cela ne fonctionne pas sur 10.7.4.
Wildcard
1
@Wildcard Cela fonctionne pour moi sur 10.11.3. Je ne me souviens plus de la version que j'utilisais quand j'ai écrit ceci
Max Nanasy
1
J'ai eu du mal à utiliser Copier classique pour coller dans Mail - les couleurs ont été perdues - mais cela a fonctionné lorsque j'ai utilisé Édition -> Copie spéciale -> Copier sans couleur d'arrière-plan (ce que je préférais quand même). Il a même travaillé avec option-glisser pour créer une sélection rectangulaire. (10.12.6)
Joshua Goldberg
31

C'est incroyable de voir comment poster une question stimule la créativité.

Je peux ouvrir la boîte de dialogue "Imprimer" et enregistrer au format PDF, puis copier le résultat en couleur du fichier PDF.

En outre, l'application de terminal iTerm2 a un raccourci CMDOPTCqui copie avec le formatage.

Wojtek Kruszewski
la source
1
Cette solution est idéale pour conserver une sortie colorée lors de la création d’exemples de terminaux dans une présentation Keynote. THX!
Beausmith
1
@Wojtek: Je vous en prie, même si cela m'a coûté une petite réputation lorsque vous avez
rejeté
+1 pour le raccourci iTerm2! Pourquoi est-ce pas même dans le meny ???
Per Lundberg
1
C'est certainement la découverte la plus utile depuis longtemps !!!
haavee
Si vous, à ⌘ + ⌥ + Cpartir de iTerm2, ouvrez Keynote et collez-le, il l'importera en tant que données de tableau. Je n'ai pas encore compris comment formater les données de manière utile, mais il existe un potentiel.
Kevin Suttle
8

vous pouvez essayer de coller la sortie colorée dans le presse-papiers comme ceci:

% command_which_produces_colors | pbcopy -prefer rtf

qui met des trucs rtf (éventuellement colorés et formatés) dans le paperboard de macos. vous pouvez alors utiliser n'importe quel autre qui comprend richtext pour accéder au presse-papiers.

ce n'est évidemment pas la même chose que "sélectionnez-le avec la souris" mais vaut peut-être le coup.

Akira
la source
Ne semble pas travailler. Le premier problème est que command_which_produces_colors remarque qu’elle n’imprime pas sur la console et qu’elle ignore les couleurs. Je peux quand même forcer certaines d’entre elles à imprimer des couleurs. La commande suivante envoie donc les couleurs au terminal: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | tee Mais pbcopy ne copie pas de couleurs: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | pbcopy -preferer rtf +1 pour les commandes pbcopy / pbpaste. C'est super pour copier des fichiers longs dans le presse-papier: "pbcopy <longfile.txt"
Wojtek Kruszewski le
1
Lorsque j'essaie, si command_which_produces_colorsdes codes ANSI sont générés, il pbcopy -Prefer rtfsuffit alors de copier le texte, y compris les codes ANSI (par exemple, il les copie [0;34mTextpour le bleu Text). Il semble que la conversion des codes ANSI en RTF puisse être requise en tant qu'étape intermédiaire.
Max Nanasy
8

Sur la base de la réponse de @ akira , j'ai proposé ce qui suit:

  1. Téléchargez le paquet source pour ansifilter
  2. Suivez les instructions sous INSTALLER pour construire et installer ansifilter.
  3. Courir <command that produces colors> | ansifilter --rtf | pbcopy -Prefer rtf
    • Vous devrez peut-être passer des arguments pour l’ <command that produces colors>obliger à produire des couleurs même si sa sortie est passepoilée, par exemple ls --color=alwaysau lieu dels
  4. Vous pouvez ensuite coller dans une application prenant en charge le texte enrichi (par exemple, Mail, TextEdit, Word).
Max Nanasy
la source
2

OS X dispose de plusieurs raccourcis clavier (touches de raccourci) pour copier l’écran. Ceux-ci enregistreront vos captures d'écran au format jpg sur le bureau. En voici une liste:

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 

Il y a aussi une application "Grab" située dans Applications | Le dossier Utilitaires qui fait le même travail, plus quelques fonctionnalités supplémentaires telles que le délai.

Mise à jour

Dans Snow Leopard (10.6.8), le format de capture d'écran par défaut est png et non jpg, bien que vous puissiez le remplacer par un autre, y compris le format PDF, à l'aide de l' utilitaire tiers gratuit de configuration des préférences TinkerTool .

martineau
la source
9
un .jpg est un peu moins beau qu'un texte "pur".
Akira
3
+1 pour les raccourcis moins connus de la zone de sélection.
Daniel Beck
@akira: Le PO veut des couleurs - ce que vous ne pouvez pas faire dans un format texte brut à moins de compter les séquences d'échappement ANSI incorporées - et celles-ci auraient besoin de quelque chose pour les interpréter comme un émulateur de terminal, mais vous revenez à le problème d'origine.
martineau
2
@martineau: en fonction des possibilités du presse-papiers, les couleurs sont enregistrées par balisage (par exemple, richtext ou html) lorsque vous copiez depuis un navigateur, un mot ou xyz. et, selon l'application qui reçoit de tels extraits de code, ils peuvent afficher les couleurs ET le texte sans problème. le terminal reçoit des séquences d'échappement ascii, c'est correct, mais ce n'est pas parce qu'il reçoit des séquences d'échappement ascii qu'il doit a) les stocker (par exemple, pensez html-terminal) b) il peut améliorer le texte sélectionné de nombreuses façons (vous pouvez mettre différents types de mime dans un bon presse-papiers à la fois).
Akira
3
@akira Un fichier JPG est un très mauvais choix de format d'image pour une capture d'écran. De grandes zones de couleur unique et des lignes de pixel uniques nettes, etc. Heureusement, Apple n'est pas si stupide et le fichier qu'il enregistre est un fichier PNG. lbrandy.com/blog/2008/10/my-first-and-last-webcomic
rjmunro
0

Je fais cela via l'excellente application Textmate 2.

  1. Copier de la fenêtre graphique R
  2. Coller dans un document textmate vide
  3. Changez le type de document en R Console ou R selon vos préférences
  4. Utilisez le symbole de copie avec style (shift-cmd-c)
  5. Coller dans la fenêtre de composition de l'application de messagerie

Je dois dire que ce serait bien si shift-cmd-c fonctionnait directement dans la fenêtre de la console R.

Michael Neale
la source