These Unix Spotlights are about some Unix commands that you might not know exist and a few things you can do with them.
tee splits the output of stuff. Think of it like a T where the input is going up the bottom and the output splits at the top.
Here was the problem. I was building a docker container but at one point there was an error and the terminal had a ton of errors and I couldn't scroll up to see what caused them. Bummer. My first thought was to pipe out the thing into a log, which I did — but then I had to keep refreshing the log to see what was happening. I looked for a log reader, like on Mac, but there wasn't anything great I found.
"I want to be able to read the terminal, and I want a log file of the things that are happening on the terminal. Is that so much to ask?"
# This will append the results to ip_pings.log, but also display it in terminal. $ ping 127.0.0.1 | tee -a ip_pings.log
But you can also do slightly less trivial things as I learned. Here, I'm taking input (from a trivial place, but you can take it from any stream) and make a backup of the raw stream as well as transforming it.
For example, in my
ls I don't want to see kilobytes, that's lame: I want coolobytes.
# Do an ls, save that into backup.txt, # Do a sed find-and-replace (ignore if you don't know what it is) # Then save the find-and-replace into main_file.txt $ ls -sh | tee backup.txt | sed -r 's/([0-9.]+)K/\1 coolobytes/g' | tee main _file.txt total 20 coolobytes 4.0 coolobytes hello-backup.txt 16 coolobytes hello.txt 0 main_file.txt $ cat main_file.txt total 20 coolobytes 0 backup.txt 4.0 coolobytes hello-backup.txt 16 coolobytes hello.txt 0 main_file.txt $ cat backup.txt total 20K 0 backup.txt 4.0K hello-backup.txt 16K hello.txt 0 main_file.txt
You will probably never need to find-and-replace coolobytes but this can be helpful when parsing logs into a nicer form ad hoc.