GNU Screen:画面が接続されていないと、コマンドを詰め込むことはできませんか?


10

次のスクリプトがあります

screen -d -m -S $1                #start screen minimized
screen -S $1 -X stuff "$beast     
"                                 #stuff commands

最初にスクリーンを取り付けない限り、ものの影響は何もしないようです?これはなぜですか?画面を接続する必要がないように、このスクリプトをどのように変更できますか?

回答:


14

デタッチモード(screen -d -m)でScreenセッションを開始すると、ウィンドウは選択されないため、後で送信された入力screen -X stuffは失われます。キーストロークをウィンドウ0(-p 0)に送信することを明示的に指定する必要があります。いずれにせよ、そのScreenセッションで他のウィンドウを作成した場合に備えて、これは良い考えです。

screen -S "$1" -p 0 -X stuff "$beast$(printf \\r)"

(キーprintf \\rを厳密にエミュレートしReturnます。すべてではありませんが多くのプログラムが改行(\n)を受け入れます。)


ありがとう!それは完璧に動作します。トピックから外れて申し訳ありません
でした

私にはうまくいきません。
Tanner Strunk

2

これは最近、unix.stackexchange.comで質問に回答しようとしたときに発生しました

要約すると、接続しない限り、画面にはデフォルトで選択されたウィンドウがありませんが、Gillesは、screenコマンドに引数を追加することによって強制的にウィンドウを選択する方法を示しました-p 0

個人的にはに切り替えることをお勧めtmuxます。画面コマンドをtmuxで動作するように移植する方法は次のとおりです。

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.