如何覆盖bash中的先前输出

时间:2020-04-20 15:20:33

标签: linux bash

我有一个bash脚本,它每秒将最占用CPU最多的进程输出到终端。

tmp=$(ps -e -eo pid,cmd,%mem,%cpu,user --sort=-%cpu | head -n 11)
printf "\n%s\n" "$tmp[pid]"

我知道我可以将光标移动到预先声明的位置,但这在每次未清除终端时都会失败。 我也可以只是转到该行的开头并将其覆盖,但是当当前输出比前一个输出短并且行数与前一个输出不同时,这又会带来问题。

有没有一种方法可以完全擦除先前的输出并从那里写入?

1 个答案:

答案 0 :(得分:0)

是的,您可以在每次迭代之前清除屏幕的一部分(请参阅https://unix.stackexchange.com/questions/297502/clear-half-of-the-screen-from-the-command-line),但是功能 watch 可以帮您完成。试试:

watch -n 1 "ps -e -eo pid,cmd,%mem,%cpu,user --sort=-%cpu | head -n 11"
相关问题