
私の .screenrc ファイルには、1 つの画面ウィンドウを開くための次の行があります。
screen -t "normal"
次の行は別のウィンドウを開いて top を実行します:
screen -t "top" top
これらは問題なく動作するので、すぐにdf && ls -alh
3 番目のウィンドウで実行したかったので、次の行を .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」を使用する特定のケースで機能します。