Linux gnu screen - 画面が起動したらすぐにコマンドを実行しますか?

Linux gnu screen - 画面が起動したらすぐにコマンドを実行しますか?

私の .screenrc ファイルには、1 つの画面ウィンドウを開くための次の行があります。

screen -t "normal"

次の行は別のウィンドウを開いて top を実行します:

screen -t "top" top

これらは問題なく動作するので、すぐにdf && ls -alh3 番目のウィンドウで実行したかったので、次の行を .screenrc に追加しました。

screen -t "df" df && ls -alh

df ウィンドウが表示されないので、&& が問題の原因である可能性があると考え、df だけで試してみました。

screen -t "df" df

df ウィンドウはまだ表示されません。

質問: screenrc を使用して、同じ画面ウィンドウで 1 つのコマンドの後に別のコマンドを実行するにはどうすればよいですか? bash の場合とまったく同じように動作するようにしたいと思います。アドバイスをいただければ幸いです。

答え1

おそらく表示されますが、実行後に消えます。

次のことを試してください。

screen -t "df" bash -c 'df && sleep 50'

dfこれにより、コマンドの出力が50数秒間表示されます。

有用な出力を得るには、以下dfを使用することをお勧めしますwatch:

screen -t "df" watch -n 10 df

これは 10 秒ごとに実行されるdfため、その端末で空きディスク領域の実際のステータスを確認できます。

答え2

古い質問ですが、検索結果では私が見つけた最もわかりやすい回答より前に表示されましたここ

私にとって効果があったいくつかの解決策:

screen -t Files zsh -c 'ls -lahG; exec zsh'

私の .screenrc ファイルでは、'exec zsh' は、'ls' コマンド/プロセスが完了した後、領域内のウィンドウに別のコマンド プロンプトを開きます (GNU screen のウィンドウのシェルに手動でコマンドを入力する動作に似ています)。これは 'sleep' コマンドを実行するよりも効率的であると想定していますが、間違っている場合は訂正していただければ幸いです。

screen -t Files zsh -c 'vim .'

上記は、「ls」を使用する特定のケースで機能します。

関連情報