是否有一个背景执行任务的方式告知打印新的提示终端?(Is there a way for a bac

2019-08-02 07:17发布

我想写一个可以运行的背景执行任务(即一个节目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 ...

...请注意,我们现在有没有提示光标前,更何况还有一个丑陋erraneous提示我的计划吐出来输出,其中虽然已经打印的提示。

因此,我想三两件事,其中只有一个我没有任何想法如何去这样做:

  1. 检测是否我的程序在后台中运行,并且相应地改变我的输出/操作(即打印出少无用的信息;队列进一步的信息仅是输出当该程序被再次前景化; etceteras)
  2. 清除出提示(如果它已经存在)的时候,突然打印信息到终端,我们已经转到后台的
  3. 通知无论我打印到终端我完成后,终端,不知何故迫使它重新绘制新的提示符下面的内容我已经添加

第三个是唯一一个我完全不知道如何去; 虽然我已经有了其他两个,任何链接或建议一些端倪那里将作为欢迎和好评。

同样赞赏,甚至,将是任何方案它已经有一个操作这个模式的链接(任何语言/环境); 我可以尝试反向工程/ spelunk实施。

Answer 1:

这对我的作品:

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

在“喜”被回显后,zsh的认识与“asdfasdf”完整重绘你的提示。

所以,没有什么大的惊喜:zsh的比bash的更好。



文章来源: Is there a way for a backgrounded task to inform the terminal to print a new prompt?