管道视图循环序列(向 While 或 For 循环添加进度条)- Bash
Pipe-view a loop sequence (add a progress bar to While or For loop) - Bash
如 here and here 所述,pipeviewer 是一种根据内容大小显示内容进度的工具。如那里所见,他们的问题的建议是在没有数据量的情况下获得进程的进度条运行。
我想知道是否可以使用 pipeviewer 显示循环的进度,考虑到我正在从文件中读取它,并且我知道它的大小。
我正在尝试
while IFS= read -r line;
do
<code>
done < file.txt | pv
这绝对行不通,因为 pv 只显示一个空的进度条。
有什么想法吗?
提前致谢!
如果可以的话,用pv
而不是cat
读取文件,这样pv会自动获取文件大小并适当地格式化进度条。
例如:
pv very_big_file.txt
或者,在您的示例中:
pv file.txt | while IFS= read -r line;
do
<code>
done
如果用pv
无法读取文件,可以用-s size
传递pv
文件的大小。
这样,pv
将期望流程达到该长度,并按比例格式化进度条。
您可以通过以下方式获取文件的大小:
stat -c '%s' file
或
wc -c < file
例如:
command1 | command2 | ... | pv -s $(stat -c '%s' file) | commandX | ...
在你的例子中:
cat file.txt | pv -s $(stat -c '%s' file.txt) | while IFS= read -r line;
do
<code>
done
如您所见,在 cat 之后使用 pv
是多余的,应该用 pv
读取文件来代替。
如 here and here 所述,pipeviewer 是一种根据内容大小显示内容进度的工具。如那里所见,他们的问题的建议是在没有数据量的情况下获得进程的进度条运行。
我想知道是否可以使用 pipeviewer 显示循环的进度,考虑到我正在从文件中读取它,并且我知道它的大小。
我正在尝试
while IFS= read -r line;
do
<code>
done < file.txt | pv
这绝对行不通,因为 pv 只显示一个空的进度条。
有什么想法吗?
提前致谢!
如果可以的话,用pv
而不是cat
读取文件,这样pv会自动获取文件大小并适当地格式化进度条。
例如:
pv very_big_file.txt
或者,在您的示例中:
pv file.txt | while IFS= read -r line;
do
<code>
done
如果用pv
无法读取文件,可以用-s size
传递pv
文件的大小。
这样,pv
将期望流程达到该长度,并按比例格式化进度条。
您可以通过以下方式获取文件的大小:
stat -c '%s' file
或
wc -c < file
例如:
command1 | command2 | ... | pv -s $(stat -c '%s' file) | commandX | ...
在你的例子中:
cat file.txt | pv -s $(stat -c '%s' file.txt) | while IFS= read -r line;
do
<code>
done
如您所见,在 cat 之后使用 pv
是多余的,应该用 pv
读取文件来代替。