Bash脚本输出一些统计数据。
while :
do
date
sensors | grep "temp1"
sensors | grep "Core"
acpi
sleep 1
done
可以使用一个班轮,例如date
,并使用echo -ne "$(date)\r"
在同一行上输出。是否可以在不使用clear
的情况下对多行执行相同操作?
答案 0 :(得分:4)
一种选择是在GNU watch
下运行它watch -n 1 'date; sensors | grep "temp1" ;sensors | grep "Core";acpi'
答案 1 :(得分:3)
你可以这样做:
while true; do
date
sensors | grep "temp1"
sensors | grep "Core"
acpi
sleep 1
for i in {1..4}; do # clear four lines above
tput cuu1 # up by one line
tput el # clear that line
done
done
使用man tput
获取更多信息。要查看功能列表,请使用man terminfo
这是我想出的一个黑客,以避免眨眼:
while true; do
echo -n "$(date)"; tput el; echo
echo -n "$(sensors | grep "temp1")"; tput el; echo
echo -n "$(sensors | grep "Core")"; tput el; echo
echo -n "$(acpi)"; tput el; echo
sleep 1
tput cuu 4
# tput -S <<< $'cuu1 \n cuu1 \n cuu1 \n cuu1' # that's how you pass several actions to tput, but instaed of cuu1 several times use 'cuu N'
done
当然,只有当你的命令只输出一行时,这才有效。
答案 2 :(得分:3)
你可以:
echo -n $'\e[H\e[2J'
或者
tput clear