Pipe Viewer
As a person who runs a lot of ETL-like commands at work, I never find myself using pv(1). I love the idea of it, but for the commands I most want to measure progress of, they always seem to be either:<p>1. things where I&#x27;d be paranoid about pv(1) itself becoming the bottleneck in the pipeline — e.g. dd(1) of large disks where I&#x27;ve explicitly set a large blocksize and set conv=idirect&#x2F;odirect, to optimize throughput.<p>2. things where the program has some useful cleverness I rely on that requires being fed by a named file argument, but behaves a lot less intelligently when being fed from stdin — e.g. feeding SQL files into psql(1).<p>3. things where the program, even while writing to stdout, also produces useful &quot;sampled progress&quot; informational messages on stderr, which I&#x27;d like to see; where pv(1) and this output logging would fight each-other if both were running.<p>4. things where there&#x27;s no clean place to insert pv(1) anyway — mostly, this comes up for any command that manages jobs itself in order to do things in parallel, e.g. any object-storage-client mass-copy, or any parallel-rsync script. (You&#x27;d think these programs would also report global progress, but they usually don&#x27;t!)<p>I could see pv(1) being fixed to address case 3 (by e.g. drawing progress while streaming stderr-logged output below it, using a TUI); but the other cases seem to be fundamental limitations.<p>Personally, when I want to observe progress on some sort of operation that&#x27;s creating files (rsync, tar&#x2F;untar, etc), here&#x27;s what I do instead: I run the command-line, and then, in a separate terminal connected to the machine the files are being written&#x2F;unpacked onto, I run this:<p><pre><code>    # for files
    watch -n 2 -- ls -lh $filepath

    # for directories
    watch -n 4 -- du -h -d 0 $dirpath
</code></pre>
If I&#x27;m in a tmux(1) session, I usually run the file-copying command in one pane, and then create a little three-vertical-line pane below it to run the observation command.<p>Doing things this way doesn&#x27;t give you a percentage progress, but I find that with most operations I already know what the target&#x27;s goal size is going to be, so all I really need to know is the size-so-far. (And pv(1) can&#x27;t tell you the target size in many cases anyway.)