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.