我有以下循环查看更改的目录大小:
while true; do du -hcs . ; sleep 2 ; clear ; done
我不满意的是du
的清除和实际输出之间的等待时间。结果大约是一个闪烁的数字。
我该如何修改它以将新的数字简单地写在旧数字上,而中间没有黑屏?
答案 0 :(得分:3)
watch du -hcs .
来自man page:
监视重复运行 command ,显示其输出(第一个屏幕全屏)。这使您可以观察程序输出随时间的变化。默认情况下,该程序每2秒运行一次;使用
-n
或--interval
指定其他间隔。
watch
很聪明:它只重绘屏幕上已更改的部分,避免全屏清除导致您用clear
看到的闪烁。
答案 1 :(得分:0)
我认为watch
是满足您需求的正确工具,但是
while true;do echo -n $(date +%Y%m%d%H%M%S) $(du -hcs ..|grep -v total);sleep 1;echo -e "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";done
可能只是您要寻找的可怜替代品。
但是,如果您的外壳是破折号而不是bash,请使用:
while true;do echo $(date +%Y%m%d%H%M%S) $(du -hcs ..|grep -v total)|tr -d '\n';sleep 1;echo $'\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b';done