生成直後に生成された「画面」にコマンドを「埋める」ことはできません。

生成直後に生成された「画面」にコマンドを「埋める」ことはできません。

重複の可能性:
分離した画面にテキスト入力を送信する

注質問への回答: 外部からスクリーンセッションに入力を送信する

screenコマンドを生成し、実行したいstuffシェルにそのコマンド(私の場合はUNIXコマンド)を入力するスクリプトを作成しようとしています。

これが私が今まで持っているものです:

$ screen -dmS new_screen bash

$ screen -S new_screen -X stuff "cd /some/path/
some_script_file.sh
" <--This new line is required to execute the above command. 
$ # Note: See comments. We could insert the newline character instead of 'hard-coding' a newline string literal.

何らかの理由で画面がうまく作成され、bashシェルに入ります。ただし、cdコマンドsome_script_file.shは画面上のbashシェルを埋めません。

今本当に奇妙な部分は...画面から抜け出して下のstuffコマンドを再実行することです...

$ screen -S new_screen -X stuff "cd /some/path/
some_script_file.sh
"

その後、new_screenをもう一度追加してください。これで、画面内の bash シェルでコマンドが正しく入力され実行されることがわかります。

ここで私が間違っているのはわかりませんが、まだ接続されていない画面にコマンドを入力するのに問題がないようです。

ベストアンサー1

最初の画面セッションを作成すると、ウィンドウは選択されません。したがって、コマンドを送信すると、画面はコマンドを送信するウィンドウを知りません。しかし、画面に接続するとウィンドウが選択されるので、これを行った後にコマンドを送信できます。コマンドラインからウィンドウを選択するには、このオプションを使用する必要があります-p

機能する必要があるコマンドの修正は次のとおりです。

screen -S new_screen -p 0 -X stuff "cd /some/path/
some_script_file.sh
"

おすすめ記事