Interview with the author of “Mastering cat” [possible satire]
Published on: 1-April-2009
Shlomi Fish, acclaimed author of Mastering mv and Mastering rm, has taken the time to sit down with us for an interview on his latest book, Mastering cat. In this 344 pages-long book, Fish details everything you wanted to know about the UNIX cat
command. We decided to have an interview with him to find out more about the book’s motivation, content, and philosophy.
O’Reilly Net: Hi, Shlomif!
Shlomi Fish: Hi!
O’Reilly Net: So, what has motivated you to write the book?
Shlomif: Well, I realised people use cat
so often that they don’t take the time to fully investigate it and learn it. For example, many people I worked with believed that cat
can only be used to output one file at a time. So to output several files they used something like:
(cat file1.txt ; cat file2.txt ; cat file3.txt) | command
The horror! cat accepts several files as arguments. So you can write it as:
cat file1.txt file2.txt file3.txt | command
This has motivated me to write the book, to make people fully understand the command.
O’Reilly Net: Isn’t mastering cat
supposed to be quite easy? Does it really necessitate its own book?
Shlomi Fish: Hell no! Mastering cat
is not easy at all. In fact, mastering cat
is almost as difficult as herding cats.
For example, one case where I found that people truly underestimate the power of cat is in the prefixing a line example. You can do that with:
echo "This would be the first line" | cat - myfile.txt > myfile.txt.new mv -f myfile.txt.new myfile.txt
But people do not realize that and instead opted to use sed, awk, or even perl (!). It can be taken further, of course. If the prefix is already in its own file, you can simply use cat prefix.txt myfile.txt
Of course, if you want to append the same text to both the start and the end of a file, you can’t do that with cat - myfile.txt -
. It simply doesn’t work that way. So I end up explaining a lot about UNIX pipeline concepts in the book.
O’Reilly Net: So what else does your book cover?
Shlomi Fish: Well, I cover many things there. Among them are:
History of the
cat
command.Differences between the various
cat
implementations. (GNU, the BSDs, System V, etc.)cat
equivalents in other operating systems (DOS, Win32, VMS, OS/390, etc.)Overview of the GNU cat codebase (for programmers).
I’m also focusing on the various cat
flags, which aid in its interactive use. For example, the -E
/--show-ends
flag, that places dollar signs at the end of the lines.
Aside from all that, I’m also covering dog which is a program that provides a superset of the cat
program. I should also mention mouse
which aimed to provide an even greater superset, and was never released. Rumours say some parts of it are based on code of the leaked Windows 2000 sources.
O’Reilly Net: Your book seems bound to be popular (for some values of popularity). What can we expect from you next?
Shlomi Fish: Well, I hope many people will buy the book, or read it online so they’ll be educated about cat
. If you like Mastering cat, look forward to my next book - Mastering echo. I expect it to be published next fall.
Thanks
Thanks to Drew Dexter, Diego Iastrubni, Omer Zak, chromatic and others for reviewing this item and giving some useful advice - some of which was incorporated into the final version.
Note: some people have asked for a larger version of the cover. However, I reworked the “large” cover (of a Lynx) using Gimp, which I had extracted from a “large” image of an O'Reilly book. Here is the largest version I have of the reworked xcf.
Coverage
On Slashdot.org - with many comments. Recent note: Some people noted the existence of the "true" and "false" commands in POSIX (and "sync") which are even more minimalistic.
“‘Mastering cat’, the newest O’Reilly title” - by James Turner on O’Reilly Broadcast
On the Hackers-IL mailing list (with some replies)
On the Linux-IL mailing list (with some replies)
Copyright and Licence
This document is Copyright by Shlomi Fish, 2009, and is available under the terms of the Creative Commons Attribution-ShareAlike License (CC-by-sa) 3.0 Unported (or at your option any later version).
For securing additional rights, please contact Shlomi Fish and see the explicit requirements that are being spelt from abiding by that licence.