Во-первых, считайте передающий ввод текста в отдельный экран. Вам действительно нужно -p
направить вход к правильному окну. Кроме того, команда не будет выполняться, пока Вы не наполните новую строку (CR или LF, интерактивная оболочка, работающая в экране, принимает обоих). Это:
screen -p 0 -X stuff "script -a -c 'ls -l' /tmp/command.log$(printf \\r)" &&
cat /tmp/command.log
Существует вторая проблема, которая является что screen -X stuff …
команда завершается, как только вход питался в экранную сессию. Но требуется немного времени для выполнения этого script
команда. Когда cat /tmp/command.log
выполняется, это вероятно это script
не закончился; это еще даже, возможно, не запустилось.
Необходимо будет сделать выполнение команды внутри screen
произведите некоторое уведомление. Например, это могло сигнализировать назад, что закончено, предположив, что оболочка в Экране работает на той же машине как Экран.
sh -c '
sleep 99999999 &
screen -p 0 -X stuff "\
script -a -c \"ls -l\" /tmp/command.log; kill -USR1 $!
"
wait
cat /tmp/command.log
'
Я предполагаю, что у Вас есть набор переменной $RPS1 (у меня есть текущий каталог там). Если Вы просто сбрасываете его с
unset RPS1
затем запаздывающий пробел должен исчезнуть.
-256color
, можно сохранить набор $RPS1. – here 05.01.2014, 08:06