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 ...

…请注意,我们现在在光标之前没有提示,更不用说有一个丑陋的错误提示,我的程序在已打印提示时吐出输出。

因此,我想要三件事,其中只有一件我不知道该怎么做:

  1. 检测我的程序是否在后台运行,并相应地改变我的输出/操作(即打印出更少的无用信息;排队进一步的信息,以便仅在程序再次进入前台时输出;等等)
  2. 当突然将信息打印到我们后台的终端时,清除提示(如果它已经存在)
  3. 在我完成打印到终端的任何内容后通知终端,以某种方式强制它在我添加的内容下方重新绘制一个新提示

第三个是唯一一个我完全不知道该怎么做的;尽管我对其他两个有所了解,但也将不胜感激任何链接或建议。

同样值得赞赏的是,链接到已经具有运行此模式的任何程序(任何语言/环境);因为我可以尝试对他们的实施进行逆向工程/探索。

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 回答