Pv

pv is a tool to view verbose information about data streamed/piped through it. The data can be of any source like files, block devices, network streams etc. It shows the amount of data passed through, time running, progress bar, percentage and the estimated completion time.

Installation
You can install using the following command:

Usage
pv is mostly used with other programs which lack the ability to monitor the progress.

Copy files
The easiest way to use pv is by using a file as the input stream and direct the output stream into another file.

This is the same as (per default all output is turned on):











Pipe input
The estimated completion time and progress bar can only be displayed if pv knows the total size of the input stream. For example if we use cat to produce the input stream and pipe it to pv:

The size can be given to pv to estimate the time, in this example 1kb:

Just pipe the data through pv and use it in a different program in the end. In this example we see how fast we can download the  from   using curl and count the number of words in it:

Or have more verbose output using dd: