每次打开新终端或进行新登录时,我都有一条命令运行。
该程序产生的输出(彩色)应放在命令提示符之前。运行可能需要几秒钟,这将阻止我在此之前使用终端(除非在后台运行)。
鉴于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,是否有解决方案可以做到?
欢迎任何指针或信息。
@Gilles您能详细说明一下
—
2011年
zpty
吗?我知道,没有游标之间的某种竞争,就不可能有两个程序写入同一终端。我的问题来自zsh在某些配置中已经重写了提示的事实。显然,该程序必须写入一些临时的内存缓冲区,然后在命令完成后将其“打印”到特定位置。后者全部由zsh控制。
@吉尔斯:也许这值得一个真正的答案?
—
斯特凡希门尼斯
@StéphaneGimenez当然可以。没有一些研究,我不知道该怎么做,而且我现在没有时间进行这项研究。
—
吉尔(Gilles)'所以
一个想法是
—
vasquez 2012年
screen
使用启动脚本来做到这一点,该脚本拆分屏幕并在上部运行长运行程序,在下部运行普通命令行。
zpty
:在zsh创建的终端中运行命令,并在zsh的控制下将其输出中继到实际终端。