Kopieren Sie die Farbausgabe vom Mac OS X-Terminal

37

In meinem Terminal wird eine hübsche farbige Ausgabe angezeigt.

Das Terminal verfügt über den Befehl "Text exportieren als", speichert jedoch eine Nur-Text-Datei ohne die Farben. Das gleiche gilt für Kopieren und Einfügen.

Kennen Sie eine Möglichkeit, Terminalausgaben einschließlich Farben zu speichern?

Wojtek Kruszewski
quelle
Wenn dies für Sie von Bedeutung ist, informieren Sie Apple bitte über apple.com/feedback/macosx.html (Feedback-Bereich für Anwendungen / Dienstprogramme) oder developer.apple.com/bugreporter (Registrierung für ein kostenloses Entwicklerkonto erforderlich).
Chris Seite
Das Terminal verfügt nun über eine Liste mit Optionen für den Befehl zum Kopieren von Cmd-c, unter Edit -> Copy Specialdem Sie zwischen Nur-Text- und Rich-Text-Optionen umschalten können.
Joshua Goldberg

Antworten:

12

Wenn Sie Text im Terminal auswählen, dann kopieren und in eine Anwendung einfügen, die Rich-Text unterstützt (z. B. Mail, TextEdit, Word), bleibt die Textfarbe erhalten.

In Mail und TextEdit wird anscheinend auch die Hintergrundfarbe des Terminals eingefügt. in Word ist es nicht. Ich bin mir nicht sicher, wie ich diese Diskrepanz erklären soll.

Max Nanasy
quelle
Welche Version von OS X verwenden Sie? Dies funktioniert in 10.7.4 nicht.
Wildcard
1
@Wildcard Funktioniert bei mir am 10.11.3. Ich kann mich nicht erinnern, welche Version ich verwendet habe, als ich das geschrieben habe
Max Nanasy
1
Ich hatte Probleme beim Einfügen in Mail mit dem normalen Kopieren - die Farben gingen verloren - aber es funktionierte, wenn ich Bearbeiten -> Spezial kopieren -> Kopieren ohne Hintergrundfarbe verwendete (was ich sowieso vorgezogen habe). Es funktionierte sogar mit Option-Drag, um eine rechteckige Auswahl zu erstellen. (10.12.6)
Joshua Goldberg
31

Erstaunlich, wie das Posten einer Frage die Kreativität fördert.

Ich kann den "Drucken" -Dialog öffnen und als PDF speichern und dann die farbige Ausgabe aus dem PDF kopieren.

Auch die iTerm2-Terminal-App verfügt über eine Verknüpfung CMDOPTC, die beim Formatieren kopiert wird.

Wojtek Kruszewski
quelle
1
Diese Lösung ist ideal, um die Farbausgabe beim Erstellen von Terminalbeispielen in einer Keynote-Präsentation beizubehalten. Danke!
Beausmith
1
@ Wojtek: Gern geschehen, auch wenn es mich einen kleinen Ruf gekostet hat, als Sie meine Antwort nicht
akzeptierten
+1 für die iTerm2-Verknüpfung! Warum ist das nicht mal im meny ???
Per Lundberg
1
Das ... ist definitiv der nützlichste Fund seit langer Zeit !!!
Haavee
Wenn Sie ⌘ + ⌥ + Cin iTerm2 Keynote öffnen und einfügen, wird es als Tabellendaten importiert. Ich habe noch nicht genau herausgefunden, wie ich die Daten sinnvoll formatieren kann, aber da gibt es Potenzial.
Kevin Suttle
8

Sie können versuchen, die farbige Ausgabe wie folgt in die Zwischenablage einzufügen:

% command_which_produces_colors | pbcopy -prefer rtf

das legt einige rtf (möglicherweise farbige und formatierte) sachen in das pasteboard von macos. Sie können dann jeden anderen Befehl verwenden, der Richtext versteht, um auf die Zwischenablage zuzugreifen.

Dies ist natürlich nicht dasselbe wie "mit der Maus auswählen", aber vielleicht einen Versuch wert.

Akira
quelle
Seme nicht zur Arbeit. Das erste Problem ist, dass command_which_produces_colors feststellt, dass es nicht auf der Konsole gedruckt wird, sodass die Farben übersprungen werden. Ich kann einige von ihnen sowieso zum Drucken von Farben zwingen, daher gibt der folgende Befehl Farben an das Terminal aus: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | tee Aber pbcopy kopiert keine Farben: CLICOLOR = 1 CLICOLOR_FORCE = 1 ls -alh | pbcopy -prefer rtf +1 für pbcopy / pbpaste-Befehle. Es ist großartig, um lange Dateien in die Zwischenablage zu kopieren: "pbcopy <longfile.txt"
Wojtek Kruszewski
1
Wenn ich dies versuche, command_which_produces_colorskopiere ich, wenn ANSI-Codes erzeugt werden, pbcopy -Prefer rtfnur den Text einschließlich der ANSI-Codes (z. B. [0;34mTextfür Blau Text). Es scheint, als ob die Konvertierung der ANSI-Codes in RTF als Zwischenschritt erforderlich sein könnte.
Max Nanasy
8

Basierend auf der Antwort von @ akira habe ich Folgendes gefunden:

  1. Laden Sie die Quellcode - Paket für ansifilter
  2. Befolgen Sie die Anweisungen unter INSTALL, um Ansifilter zu erstellen und zu installieren
  3. Lauf <command that produces colors> | ansifilter --rtf | pbcopy -Prefer rtf
    • Möglicherweise müssen Sie Argumente übergeben, um <command that produces colors>zu erzwingen, dass Farben erzeugt werden, obwohl die Ausgabe weitergeleitet wird, z. B. ls --color=alwaysstatt nurls
  4. Sie können dann in eine Anwendung einfügen, die Rich-Text unterstützt (z. B. Mail, TextEdit, Word).
Max Nanasy
quelle
2

OS X verfügt über mehrere Tastaturkürzel (Hotkeys) zum Kopieren des Bildschirms. Diese speichern Ihre Screenshots als JPG-Dateien auf dem Desktop. Hier ist eine Liste von ihnen:

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 

Es gibt auch eine "Grab" -Anwendung in der Anwendung | Der Ordner "Dienstprogramme", der den gleichen Job ausführt, verfügt außerdem über einige zusätzliche Funktionen, z. B. "Verzögerung".

Aktualisieren

In Snow Leopard (10.6.8) ist das Standard-Screenshot-Format png nicht jpg, obwohl es mit dem kostenlosen TinkerTool- Einstellungsdienstprogramm eines Drittanbieters in eines von vielen anderen - einschließlich pdf - geändert werden kann.

Martineau
quelle
9
Eine .jpg ist nicht so schön wie "reiner" Text.
Akira
3
+1 für die weniger bekannten Verknüpfungen für den Auswahlbereich.
Daniel Beck
@akira: Das OP möchte Farben - etwas, das Sie in einem Nur-Text-Format nur dann tun können, wenn Sie eingebettete ANSI-Escape-Sequenzen zählen - und diese müssten wie ein Terminal-Emulator interpretiert werden, aber dann sind Sie wieder da das ursprüngliche Problem.
Martineau
2
@martineau: Abhängig von den Funktionen der Zwischenablage werden Farben durch Markup (z. B. Richtext oder HTML) gespeichert, wenn Sie aus einem Browser oder aus Word oder aus XYZ kopieren. und abhängig von der Anwendung, die solche markierten Schnipsel erhält, können sie die Farben UND den Text ganz in Ordnung zeigen. Das Terminal empfängt ASCII-Escape-Sequenzen, richtig, aber nur, weil es ASCII-Escape-Sequenzen empfängt, bedeutet dies nicht, dass es a) sie speichern muss (z. B. html-terminal) verschiedene Mime-Typen auf einmal in eine gute Zwischenablage legen).
Akira
3
@akira Ein JPG ist eine wirklich schlechte Wahl des Bildformats für so etwas wie einen Screenshot. Große Flächen mit nur einer Farbe und scharfen Linien mit nur einem Pixel. Glücklicherweise ist Apple nicht so dumm und die gespeicherte Datei ist eine PNG-Datei. lbrandy.com/blog/2008/10/my-first-and-last-webcomic
rjmunro
0

Das mache ich über die exzellente Textmate 2 App.

  1. Kopieren aus dem R-Grafikfenster
  2. Einfügen in ein leeres Textmate-Dokument
  3. Ändern Sie den Dokumenttyp wie gewünscht in R Console oder R
  4. Benutze das Copy-with-Style-Bundle (shift-cmd-c)
  5. Einfügen in E-Mail-App-Erstellungsfenster

Ich muss sagen, es wäre schön, wenn shift-cmd-c direkt im R-Konsolenfenster funktionieren würde.

Michael Neale
quelle