I wrote this script some months ago, and now rereading it, I'm unable to decipher what I meant by this line:
sudo rsync -xPRSaz --rsync-path='sudo rsync' maeve@macbook:/ macbook/ 3>&1 1>&2 2>&3 | tee macbook.log
I can't find any special treatment of file descriptor 3 for sudo, rsync or tee. After the redirects I'm currently guessing this is the situation:
now fd points to old fd
0 --> 0
1 --> 2
2 --> 1
3 --> 1
- Are these redirects applied to
sudo, or torsync, and to what end? - Is file descriptor 3 being left unclosed or hanging in any "bad" way?
Your guess is right. It's a rather nifty trick to swap standard output and standard error. To answer your questions:
sudo). Thesudoprocess itself will detect all the arguments and pass them along to its subcommand (rsync) but the redirections have been captured and acted upon before that point:sudonever sees them.