2016-08-09 37 views
0

Ich habe einen Bildschirm "myscreen" erstellt, und in diesem Bildschirm habe ich zu einem Ordner navigiert, der eine Python-Datei test.py enthält, die einfach etwas ausdruckt. Dann löste ich den Bildschirm, und jetzt versuche ich, einen Befehl zu senden, um mein Skript auszuführen. Also habe ich versucht, den folgenden Befehl ein:linux sending command to existing screen

screen -S myscreen -X stuff python test.py `echo -ne '\015'` 

keine Fehler gibt, aber wenn ich meinen Bildschirm öffnete die Ausgabe dort zu sehen, ich sah nichts - der Bildschirm war leer. Ich habe versucht, einen anderen Ansatz: Ich habe eine Shell-Datei, wo ich schrieb:

screen -r myscreen 
python test.py 

Aber das Ergebnis war das gleiche und es wurde nichts gedruckt. Was sind die Gründe dafür, dass beide Versuche fehlschlugen und wie behebe ich es? Vielen Dank.

Update:

Ich habe auch versucht diese, die nicht funktioniert hat:

screen -X select myscreen 
screen -X readreg p <(echo python test.py) 

Antwort

0

Wenn Sie es wie Sie wollen, können Sie die Befehle an den Bildschirm senden selbst, nicht im Terminal Lauf im Inneren.

Wie können Sie die Befehle im Terminal senden?

Verwenden Sie readreg und paste. Hier schicke ich Daten aus /tmp/file in den Bildschirm 1:

$ screen -X select 1 
$ screen -X readreg p /tmp/file 
$ screen -X paste p 

Wenn Sie keine Datei mit den Daten haben, Sie Prozess Substitution verwenden können, wie folgt aus:

$ screen -X readreg p <(echo python test.py) 
+0

es hat nicht funktioniert, bitte Siehe meine aktualisierte Frage. –

+0

Mister_L: Sie müssen danach 'paste p' ausführen + wählen Sie 1, wenn Sie in Terminal 1 einfügen möchten (standardmäßig 0). –

+0

@IgorChubin Hmm, scheint meine Version des Bildschirms nicht Prozesssubstitution (es sagt "keine schlürfen: keine solche Datei oder Verzeichnis"), aber es funktioniert mit einer temporären Datei. – Teajay