4 ms·
$ echo "Process substitution is fun" | tee >(rev) Process substitution is fun nuf si noitutitsbus ssecorP
by jkbyc 12y ago
$ echo "Process substitution is fun" | tee >(rev)
Process substitution is fun
nuf si noitutitsbus ssecorP
- ptx 12y agoI've never understood the point of tee without process substitution. I guess you could do the same thing manually by opening another file descriptor first an forking some process, but is it of any use in a normal simple pipe?
- denisw 12y agoA good use case is to redirect output into a file you only can modify with sudo. Trying to do it like this doesn't work: sudo echo "fs.inotify.max_user_watches=1000000" > /etc/sysctl.conf as the redirection happens within the shell, thus without root permissions. However, the following does work: echo "fs.inotify.max_user_watches=1000000" | sudo tee /etc/sysctl.conf as the writing is done by the elevated tee process.
- derefr 12y agoThat seems like an anti-unixism (operating with multiple EUIDs in a single process group), though I'm not too sure what the equivalent unixism would be—maybe something with a daemon and a spool directory? Or a user-writable FIFO, redirected to the correct file by the elevated user in a separate command?
- mturmon 12y agoI use tee to save log files from long running programs. The chatter goes to stdout, and informs me about progress. But the tee also saves the chatter, so I can review it if something goes wrong. You could get a similar effect in other ways (e.g., tail -f, or terminal scrollback), but I find tee is convenient.
- philsnow 12y agoOften I'll do something like long_running_thing | tee long_running_thing_stdout and want to see the first few lines of output before going to do something else. The pipe causes buffering on stdout, though, so I have to sit there until 4k of output has come out on stdout. As seen on https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe https://unix.stackexchange.com/questions/25372/turn-off-buff... , either `unbuffer long_running_thing` or `stdbuf -oL long_running_thing` causes it to output linewise instead of 4k at a time.