覆盖最后一个终端输出(多行)

时间:2015-03-22 18:33:31

标签: bash shell process refresh overwrite

我想编写一个每秒刷新一次的脚本(作为参数给出),它会显示按运行进程数排序的用户。

到目前为止,我的代码是:

#!/bin/bash

s=$1
tput sc;
while true
do
    ps hax -o user | sort | uniq -c | sort -nr
    sleep $s
    tput rc;
    tput el

done

我希望获得类似刷新效果的东西,但所有这些代码都是在最后一个输出处连接。有一种方法可以让它覆盖最后一行。(PS进一步我必须实现只显示前n个用户( n是从键盘给出的)所以我有点需要把它链接到这个。

1 个答案:

答案 0 :(得分:1)

您可以尝试将擦除行功能添加到每行的末尾,例如,

#!/bin/bash

s=$1
tput sc;
EL=$(tput el)
while true
do
    tput rc
    ps hax -o user | sort | uniq -c | sort -nr | sed -e "s/\$/$EL/"
    sleep $s

done