Published at
Updated at
Reading time
This post is part of my Today I learned series in which I share all my web development learnings.

Today I came across this tweet by Safia Abdalla. It showed that you can use the cat command to quickly add content to a file (cat - >> foo.txt). The way it works is that you can directly write to stdin until you hit ^D or ^C.

So I opened the manual for the cat command and wanted to see what else is in there. One sentence suprised me though.

If file is a single dash (`-') or absent, cat reads from the standard input.

You can make the snippet even shorter! ๐Ÿ˜ฒ

$ cat - >> foo.txt
# is the same as
$ cat >> bar.txt

That's cool!

I also discovered that you can use cat and stdin right in between files and concat them (you have to use ^D โ€“ ^C doesn't work then). ๐ŸŽ‰

$ cat 1.txt - 3.txt > all.txt

I'm not sure if I'll ever need this functionality but it's always good to know some shell tricks. Safia shares a lot more CLI tricks so you should definitely check these out.

Cat stdin magic

Was this TIL post helpful?
Yes? Cool! You might want to check out Web Weekly for more quick learnings. The last edition went out 5 days ago.

Related Topics

Related Articles

About the author

Stefan standing in the park in front of a green background

Frontend nerd with over ten years of experience, "Today I Learned" blogger, conference speaker, Tiny helpers maintainer, and DevRel at Checkly.