有什么方法可以阻止后台输出在 Linux 终端中分解输入吗?

Is there any way to stop background output from breaking up input in a Linux terminal?

运行一个Linux终端,我有一个long-运行ning tail后台进程不时产生终端输出通知我日志变化.由于它在后台,我希望能够 运行 它并继续在终端上工作。但是,每当我在键入时输出 tail 时,输出会在我已经在该行上键入的任何文本之后插入自身,我必须放弃该行并重新开始。例如,键入 abcdefghijklmnoptail 消息 Log Updated! 给出:

user@server:~$ abcdefghijklmLog Updated!               
nop
-bash: abcdefghijklmnop: command not found

有什么方法可以通过管道将 tail 输出打印出来,同时仍然保留我写了一半的输入行? Bash 以某种方式区分了我输入的内容和 tail 输出的内容,因此存在某种保留的输入缓冲区 - 有没有办法让 tail 擦除已经输入的字符写,打印,然后把那些字符打印到标准输入?

tail 不会执行您的要求,但有关 sed 的提示很有用。如果你运行在screen, and the tail process is running in another window (and piping through sed to append a \a ASCII BEL to the end of each line), screen will notify you in its status line的时候看到BEL在对方window.

我在一些构建脚本中使用它,在(部分交互的)任务完成时提醒我。

如果您通过 ssh 连接到执行工作的机器,没有 GUI,那么 Window 管理器对这类事情的用处不大。