Add real-time progress bars to common Linux commands and stop running tasks blindly

In Linux, many core utilities like cp, mv, tar, rm, and cat are efficient and powerful—but they often lack feedback during long operations. When copying a large file or archiving a big directory, the absence of a progress bar can be frustrating, especially when you’re waiting and unsure how long it will take.

While some commands like rsync and dd offer native ways to show progress, most don’t. That’s where a small but powerful utility called progress comes in. It lets you track the progress of common operations in real time, without altering your original command or writing complex scripts.


🧰 Use Built-in Progress Options with rsync and dd

Some Linux commands have native progress display capabilities:

rsync: built-in progress mode

Perfect for copying files locally or over SSH. Just add --info=progress2 to your command:

rsync -avh --info=progress2 source/ destination/

This displays total progress for all files being transferred.

dd: show copy status in real time

Ideal for disk imaging and bootable USB creation:

dd if=/dev/sda of=backup.img status=progress
Code language: JavaScript (javascript)

The status=progress option prints the amount of data written so far.


⚙️ progress: Add Real-Time Progress to Other Commands

For commands like cp, mv, tar, cat, gzip, and many others, use the progress tool.

It’s a command-line utility that detects running processes and displays their progress based on I/O activity, without modifying the original command.

🚀 Installation (based on your Linux distro):

  • Debian / Ubuntu / Linux Mint / Pop!_OS: sudo apt install progress
  • Fedora / RHEL / AlmaLinux / Rocky Linux: sudo dnf install progress
  • Arch / Manjaro / Garuda: sudo pacman -S progress

🖥️ Live Monitoring with watch

If you’re copying a large file and want to track progress in real time:

cp largefile.iso /mnt/ &
watch progress

This launches the copy in the background and opens a live-updating view showing the transfer progress.


⏱️ Attach progress Directly to a PID

For an even smoother experience, attach progress directly to the running process:

cp largefile.iso /mnt/ & progress --monitor --pid $!

The $! retrieves the process ID (PID) of the last background command, and progress hooks into it for live updates.


📋 Which Commands Does progress Support?

progress supports dozens of commands, including:

  • cp, mv, tar, dd, gzip, gunzip, bzip2, xz
  • 7z, 7za, zip, unzip, cat, cut, scp, rsync
  • adb, fg, and many more

Run:

progress

…to see a list of currently running operations it can monitor.


Why It Matters

Real-time feedback improves productivity and confidence, especially during time-consuming tasks. Instead of running long operations blindly, you gain:

  • Visibility into copy/archive progress
  • Faster troubleshooting if tasks stall
  • Smoother user experience for developers, sysadmins and power users

📌 Final Thoughts

Even though some tools like rsync or dd support progress display by default, it’s easy to forget the right flag in the heat of the moment. That’s when progress becomes invaluable.

It’s a simple yet powerful tool that lets you monitor what’s happening under the hood—a must-have for anyone who frequently works in the terminal.

No more guessing. Just progress.

Scroll to Top