使用pv
,我可以为我通过它传输的任何内容显示进度条,例如
echo 1234567890 | pv --size 10 >/dev/null
它会打印一个漂亮的进度条,只要有更多数据通过,它就会更新(当然,在这个例子中这应该非常快,而且不是很有用,因为数据只到达/dev/null
)。
我可以以某种方式缩进 的输出pv
吗?想象一个脚本,它会遍历我派对的所有受邀者的列表,通过电话给他们打电话,与他们交谈,然后写信给控制台,如果他们想来参加派对:
echo "The next person on the list is Berta." ;\
echo " Calling Berta..."; \
echo " Berta answered the phone. Talking..."; \
printf " "; \
for word in TALK TALK TALK TALK TALK; do
printf $word; sleep 1;
done | pv --size 20 --width 100 >/dev/null; \
echo " Berta said she would come to the party."
如果您尝试这样做,您将看到 pv 进度条的第一个输出将在 printf 打印的四个空白之后开始,但第一次更新将跳回到开头的行(可能是 CR),导致之后的输出:
The next person on the list is Berta.
Calling Berta...
Berta answered the phone. Talking...
20.0 B 0:00:05 [3.53 B/s] [======================================================>] 100% 0:01
Berta said she would come to the party.
有什么方法可以防止 pv (或任何其他发出 CR 的命令)跳回行首?像示例这样的长时间运行的命令的输出将更具可读性缩进。
特定于 的解决方案
pv
:使用-F
/--format
并在格式字符串中包含四个前导空格。(来源
man 1 pv
:)我不会在这里引用 FORMATTING 部分。见
man 1 pv
。例子: