It seems really odd to me that in 30 years, no one ever thought to
add the ability to give feedback about it's progress to the user.
Odder is that you haven't read the manual! :-)
,----[ (coreutils)dd invocation ]
| Note that sending a `SIGUSR1' signal to a running `dd' process makes
| it print to standard error the number of records read and written so
| far, then to resume copying. In the example below, `dd' is run in the
| background to copy 10 million blocks. The `kill' command makes it
| output the first pair of intermediate record counts, and when `dd'
| completes, it outputs the final pair.
|
| $ dd if=/dev/zero of=/dev/null count=10M & pid=$!
| $ kill -USR1 $pid; sleep 99
| 5403604+0 records in
| 5403604+0 records out
| 10485760+0 records in
| 10485760+0 records out
`----