GNU Screenセッションにコマンドを送信するには?セッションを対話的に使用する場合は、Ctrl+Aエスケープシーケンスを入力します。
lynx
「テキストベースのUI」(たとえば、または)でのみ動作するプログラムを操作するには、別の場所(BASHシェルスクリプト、PHPページなど)からGNU SCREENセッションに特定のキーストロークを送信する必要がありますvim
。時には画面に何が起こっているのかを確認する必要があるため、コマンドを使用してビューをエクスポートしますhardcopy -h outputFile
。
Ctrl+を画面に「埋める必要があります」Aが、+を:送信することはできません。私はこれを試しました:CtrlA
$screen -S test -p 0 -X もの '^A:'
ただし、これは画面にコロン(:)のみを表示し、^ Aを無視します。
現在実行中の作業(動作していない、手順3を完了するには手動介入が必要です):
設定画面
$スクリーン-Sテスト
画面にコマンドを注入
$screen -S test -p 0 -X もの 'python^M'
$screen -S test -p 0 -X 物 '42*9^M'画面内で Ctrl+を実行し、A画面:のコマンド入力を呼び出すことができます。その入力に次のように入力します。
:ハードコピー -h /tmp/scr-test.txt
cat
その後、ファイルを-ingして画面の内容をインポートできます。$猫/tmp/scr-test.txt
次を生成します。
$cat /tmp/scr-test.txt
justin@justin2012:~$ python
Python 2.7.8(デフォルト、2014年10月18日、12:50:18) [GCC 4.9.1]
linux2では
"help", "copyright 「と入力してください。 、「クレジット」または「ライセンス」をご覧ください。
>>> 42*9
378
>>>
ベストアンサー1
screen -S test -p 0 -X stuff '^A:'
それはうまくいきますが、ユーザーが望むものではなく、期待することをします。^A
両方の文字を:
画面ウィンドウで実行されているアプリケーションに送信します。これがstuff
まさにこのコマンドが行うことです。画面インターフェイスではなく、画面ウィンドウで実行されているアプリケーションに文字を送信します。
あなたが望むのは、画面内で実行されているアプリケーションではなく、画面自体にコマンドを送信することです。したがって、このコマンドを使用しないでくださいstuff
。このコマンドの目的ではありません。あなたが探している機能は簡単ですscreen -X …
。これはscreen -X stuff …
特別なケースです。
hardcopy
たとえば、画面でコマンドを実行するには、次のようにします。
screen -S test -p 0 -X hardcopy -h outputFile