Shell 后台任务是否有办法通知终端打印新的提示?
我想写一个可以作为后台任务运行的程序(即Shell 后台任务是否有办法通知终端打印新的提示?,shell,terminal,background-process,backgrounding,Shell,Terminal,Background Process,Backgrounding,我想写一个可以作为后台任务运行的程序(即我的东西&),并在必要时漂亮地提供相关输出 然而,对于打印到终端的后台任务,总是有这样一个恼人的小进展: bash-3.2$我的东西&▏ bash-3.2$我的东西& bash-3.2$--你好,我的东西 --现在让我开始做我最擅长的… ▏ …请注意,我们现在在光标前没有提示,更不用说还有一个丑陋的错误提示,我的程序在打印提示时吐出了输出 因此,我想要三件事,其中只有一件我不知道该怎么做: 检测我的程序是否在后台运行,并相应地更改我的输出/操作(即
我的东西&
),并在必要时漂亮地提供相关输出
然而,对于打印到终端的后台任务,总是有这样一个恼人的小进展:
bash-3.2$我的东西&▏
bash-3.2$我的东西&
bash-3.2$--你好,我的东西
--现在让我开始做我最擅长的…
▏
…请注意,我们现在在光标前没有提示,更不用说还有一个丑陋的错误提示,我的程序在打印提示时吐出了输出
因此,我想要三件事,其中只有一件我不知道该怎么做:
echo 'sleep 1; echo; echo hi' > /tmp/hi
chmod +x /tmp/hi
zsh
/tmp/hi &
asdfsadf # type whatever, here.
在'hi'得到echo'd后,zsh知道用完整的'asdfasdf'重新绘制提示
因此,毫不奇怪:zsh比bash更好。有用的知识;但它的应用范围还不够广泛,无法解决问题。好吧,它解决了2和3。至于#1,您可以捕获SIGTSTP并使其对输出进行详细描述。不过,仍然有一些挑战。这可能对你有所帮助。