I am running command like this.
# ( ( partclone.restore -X -s some.img -o /dev/sda3 2>&3 ) 3>&1 ) | grep Completed
Completed: 0.40%
Completed: 1.23%
Completed: 2.07%
...
But I cannot direct the output to a file.
# ( ( partclone.restore -X -s some.img -o /dev/sda3 2>&3 ) 3>&1 ) | grep Completed >> ./log 2>&1
There is nothing in the log file.
But something like cat some.file | grep some.string >> ./log
works fine. Why?
( partclone.restore -X -s some.img -o /dev/sda3 2>&3 ) 3>&1 ) | grep Completed >> ./log
?( ( partclone.restore -X -s some.img -o /dev/sda3 2>&3 ) 3>&1 ) | grep Completed | tee ./log
grep --line-buffered
should work, see for instance stackoverflow.com/q/7161821/2774188