Track commands progress in a compact one-line format.
⏳ progressline output |
|---|
![]() |
| 📝 standard output |
|---|
![]() |
Usage • Features • Installation
Simply pipe your command output into progressline to start tracking:
long-running-command | progressline
If the command you are executing also writes data to stderr, then you should probably use "redirection" and send stderr messages to stdout so that they also go through the progressline:
long-running-command 2>&1 | progressline
ProgressLine offers different styles to represent activity, they can be changed using -s, --activity-style option:
long-running-command | progressline --activity-style snake
Available styles:
| dots (Default) | snake | kitt | spinner |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
If you don't need to see the log output during execution, even in a single line, you can replace it with your own text using the -t, --static-text option.
long-running-command | progressline --static-text "Updating sources..."
Log specific stdin lines above the progress line using the -m, --log-matches option:
long-running-command | progressline --log-matches "regex-1" --log-matches "regex-2"
Log all stdin data above the progress line using the -a, --log-all option:
long-running-command | progressline --log-all
You have two options for saving the full original log:
- Using tee
long-running-command | tee original-log.txt | progressline
- Using
-l, --original-log-pathoption:
long-running-command | progressline --original-log-path original-log.txt
Homebrew (macOS / Linux)
brew install progressline
Mint (macOS)
mint install kattouf/ProgressLine
Mise (macOS)
mise use -g spm:kattouf/ProgressLine
Download the binary for your platform from the releases page, and place it in your executable path.
Feel free to open a pull request or a discussion.





