新しい端末が開かれるか、新しいログインが行われるたびに実行するコマンドがあります。
このプログラムは、コマンドプロンプトの前に配置される出力(色付き)を生成します。実行に数秒かかる可能性があり、それまでは(バックグラウンドで実行されない限り)端末を使用できません。
zshには既存のテキストを壊さずにターミナルを再描画する高度な方法があるので、ターミナルを使用する前にコマンドが完了するのを待つ必要がないように、このコマンドを実行する方法を知りたいのですが終了すると、最初からバックグラウンド化されていないかのように出力を印刷します。
実際には、私ができることを望みます:
Command output:
... (running on background)
me@computer: somecommand
me@computer: someothercommand
コマンドが完了すると、次のようになります。
Command output:
* Output foo
* Multiple lines bar
* and some yada
me@computer: somecommand
me@computer: someothercommand
プロセスをバックグラウンドで開始しようとしましたが、出力がきれいに表示されません。私は次のようなものを得ます:
Command output:
[2] 32207
me@computer: somecommand
me@computer: someother * Output foo
* Multiple lines bar
* and some yada
[2] + done command
me@computer: someothercommand
それで、これは可能ですか?zshを使用しない場合、それを実行できる解決策はありますか?
ポインタや情報は大歓迎です。
@ギレスの使用法について詳しく教えてください
—
unode
zpty
。カーソルをめぐって何らかの競合がなければ、2つのプログラムが同じ端末に書き込むことはできないことを知っています。私の質問は、zshが一部の構成で既にプロンプトを書き換えているという事実から来ています。明らかに、このプログラムは、コマンドが終了すると特定の場所に「出力」される一時的なメモリ内バッファに書き込む必要があります。後者はすべてzshの制御下にあります。
@ギレス:多分これは本当の答えの価値がありますか?
—
ステファン・ヒメネス
@StéphaneGimenezもちろんです。調査なしではどうすればいいのかわかりませんし、今この調査をする時間もありません。
—
Gilles「SO-悪をやめ
screen
画面を分割し、上部で長いランナーを実行し、下部で通常のコマンドラインを実行する起動スクリプトを使用して、これを行うことをお勧めします。
zpty
:コマンドをzshによって作成された端末で実行させ、その出力をzshの制御下の実際の端末に中継します。