Wie kann ich den aktuellen Terminalinhalt programmgesteuert lesen?

Wie kann ich den aktuellen Terminalinhalt programmgesteuert lesen?

Gibt es eine Möglichkeit, den aktuellen Terminalinhalt (sichtbares Fenster oder voller Puffer, je nachdem, was einfacher ist) programmgesteuert zu lesen?

Ich brauche das, weil ich versuche, ein Programm zu entwickeln, dasnachdas Ausführen eines beliebigen Befehls, arbeitet mit dessen Ausgabe. Ich betonenach– Ich weiß, dass hierfür Pipes verwendet werden, aber der Zweck des Programms besteht darin, dies zu vermeiden.

Eine mögliche Lösung wäre eine Kombination aus einem programmgesteuerten Vorgang, Select allgefolgt von einem xselAufruf, obwohl ich keine Möglichkeit kenne, die erste Operation [im Gnome Terminal] durchzuführen.

Antwort1

Sie können dies mit einem Skript tun, indem Sie screenund verwenden xdotool.

Dies könnte Ihr outputworker.sh:

#!/bin/sh
$1
xdotool key --clearmodifiers ctrl+a colon h a r d c o p y space o u t p u t Return Return
your_command output

Dann werden mit „Start“ screenund „Do“ outputworker.sh commanddie Befehle ausgeführt <ctrl-a>:hardcopy outputund eine Rückgabe an Ihre screenSitzung gesendet. Dabei wird eine Datei mit dem Namen erstellt output, die Sie in Ihrem anderen Programm verwenden können, das mit der Ausgabe arbeitet.

Bearbeiten: Die zweite Option Returnverhindert screendas Warten auf ein Timeout beim Anzeigen der Ausgabe der Hardcopy.

verwandte Informationen