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 all
gefolgt von einem xsel
Aufruf, 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 screen
und 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“ screen
und „Do“ outputworker.sh command
die Befehle ausgeführt <ctrl-a>:hardcopy output
und eine Rückgabe an Ihre screen
Sitzung 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 Return
verhindert screen
das Warten auf ein Timeout beim Anzeigen der Ausgabe der Hardcopy.