Bash提示低于输出 – 背景日志尾巴

我曾经为一家拥有自定义shell的公司工作,他们正在Linux上运行他们的产品之一,我期望复制这个shell的一个关键特性。

所有的工作都是通过后台进程完成的,日志的输出显示给所有连接的用户。

日志将在后台拖尾到你的shell,并且提示行将永远保持完美的底部。

例如

Log line 1 Log line 2 Log line 3 ![ROOT@PRODUCT51-LIVE]:~/ # 

我试图用bash做这件事的方法是在用户.bashrc文件中启动一个分离的尾部,但是当命令的输出被发送到标准输出时,它会在bash提示下进入,比如

 ![ROOT@PRODUCT51-LIVE]:~/ #Log line 1 Log line 2 Log line 3 

而用户将不得不按下input或Ctrl C的干净的提示行。

我不知道如何使提示总是跳转到输出的底部,我想我使用错误的术语来find谷歌上的任何东西,因为我没有运气 – 有谁知道如何做到这一点与bash?

    以下是您所需要的,不使用tmux或屏幕或其他程序。 保持底部的提示。 用你需要的任何文件replace“/ var / log / cron”:

     #!/bin/bash L=$(tput lines) L1=${L} (( L1-- )) C=$(tput cols) tput cup ${L} 0 tail -f /var/log/cron | while read line; do tput sc printf "\e[1;${L1}r\e[${L1};${C}f" echo; echo ${line} printf "\e[1;${L}r" && tput rc done 

    关键是terminal的ANSI控制字符。 特别是设置新的可滚动区域的“\ e [x; y”语句。 因此,当读取日志文件的每一行时,窗口的底线将从可滚动区域中排除,插入日志文件中的行,然后将底部添加回来。

    答案是屏幕或tmux已被使用

    我将解释如何使用屏幕来configuration

    1)使用Ubuntu / Debian上的apt-get install screenyum install screen RedHat衍生yum install screen

    2) screen -S shell_and_logs

    3)然后按Ctrl + a ,然后按S (大写字母S)。
    将出现一个水平屏幕

    4)按Ctrl + a,然后按Tab键
    这将跳转到第二个分割窗口。

    5)在这里创build另一个窗口,所以你通过按Ctrl + a释放键,然后按c获得命令提示符

    6)你可以通过按Ctrl + a来改变第二个窗口的大小,然后键入:resize之后显示Lines: input你想要显示的行数。

    7)最后,您可以通过Ctrl + aTAB切换窗口

    看下面的例子