セッション外で画面コマンドを呼び出す

セッション外で画面コマンドを呼び出す

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を完了するには手動介入が必要です):

  1. 設定画面

    $スクリーン-Sテスト

  2. 画面にコマンドを注入

    $screen -S test -p 0 -X もの 'python^M'
    $screen -S test -p 0 -X 物 '42*9^M'

  3. 画面内で Ctrl+を実行し、A画面:のコマンド入力を呼び出すことができます。その入力に次のように入力します。

    :ハードコピー -h /tmp/scr-test.txt

  4. catその後、ファイルを-ingして画面の内容をインポートできます。

    $猫/tmp/scr-test.txt

  5. 次を生成します。

    $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 

おすすめ記事