web-dev-qa-db-ja.com

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

私は次のスクリプトを持っています

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

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

10
dukevin

切り離しモード(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))。

これは最近、答えようとしているときに出てきました nix.stackexchange.comの質問

要約すると、アタッチしない限り、画面にはデフォルトで選択されたウィンドウがありませんが、Gillesは、引数-p 0を画面コマンドに追加することで、どのようにできるかを示しました 強制的に選択されます

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

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"
2
Caleb