2

バックグラウンド タスク (つまり ) として実行できmy-thing &、必要に応じて適切な出力を美しく提供するプログラムを作成したいと考えています。

ただし、ターミナルに出力するバックグラウンド タスクでは、常に次の厄介な小さな進行があります。

bash-3.2$ my-thing &

bash-3.2$ my-thing &
bash-3.2$ -- Hello from my-thing!
-- now let me start doing what I do best ...

…カーソルの前にプロンプ​​トが表示されていないことに注意してください。言うまでもなく、プロンプトが既に出力されている間に私のプログラムが出力を吐き出す、醜い誤ったプロンプトがあることは言うまでもありません。

したがって、私は3つのことをしたいのですが、そのうちの1つだけがどうしたらいいのかわかりません:

  1. プログラムがバックグラウンドで実行されているかどうかを検出し、それに応じて出力/操作を変更します (つまり、無駄な情報を少なく出力します。プログラムが再びフォアグラウンドになったときにのみ出力されるように、さらに情報をキューに入れます。など)
  2. バックグラウンドで使用していた端末に突然情報を出力するときに、プロンプトをクリアします (既に存在する場合)。
  3. ターミナルに出力するものは何でも終了した後、ターミナルに通知し、追加したコンテンツの下に新しいプロンプトを再描画するように強制します

3 つ目は、どうすればいいのかまったくわからない唯一のものです。他の2つについてはいくつかのインクリングがありますが、そこにあるリンクや提案もいただければ幸いです.

同様に、これを操作するモードが既にあるプログラム (言語/環境) へのリンクも同様に高く評価されます。それらの実装をリバース エンジニアリング/詳しく調べようとする可能性があるためです。

4

1 に答える 1

2

これは私のために働く:

echo 'sleep 1; echo; echo hi' > /tmp/hi
chmod +x /tmp/hi
zsh
/tmp/hi &
asdfsadf # type whatever, here.

「hi」がエコーされた後、zsh は「asdfasdf」をそのままにしてプロンプトを再描画することを認識します。

したがって、大きな驚きはありません。zsh は bash よりも優れています。

于 2012-11-05T07:22:37.590 に答える