cat

October 1st, 1997 by Patrick Hill in

Here's a spiffy little command that can be used to combine files, look at the contents of a file and do limited text editing.
Your rating: None Average: 4 (1 vote)

The Linux cat command at first seems so simple as to be unnecessary. In actuality, it is an excellent example of the Unix philosophy: create programs which do one thing and do it well. The thing cat does well is display the contents of a file or files. Many other utilities can handle this task, but none have all the options cat does. First, let's look at the simplest case:

cat /etc/motd
This command will display the contents of the motd (messages of the day) file to your screen. Unlike more (or less), cat will not stop when the screen is full. This is a feature, not a bug. You don't want pauses when redirecting (using the > operator) cat's output to a device, e.g., a printer or modem:
cat /etc/motd > /dev/modem
cat comes from the word conCATenate, which describes one of its best uses: to concatenate or “glue together” two or more files. If you have several individual files about animals you would like to collect together into one file, cat will do the work for you. For example:
cat tiger lion cougar > bigcats
would redirect the concatenation output, containing the three feline files in the specified order, into a new file named bigcats. If you find another file, panther, that needs to be added to the bigcats file, use cat with the append (>>) operator in the following way:
cat panther >> bigcats
Using >> ensures any prior content of bigcats is preserved. The content of panther is appended to bigcats. If you were to use the > operator here, you would replace the contents of bigcats with the contents of panther. Always use >> when you wish to add to the end of an existing file.

Be careful not to use the same file name when redirecting the output of the cat command, or you could lose one of the files. For example, don't do the following:

cat myfile yourfile > yourfile

In this case yourfile gets overwritten by myfile.

Another surprisingly handy use for cat is to redirect standard input like this:

cat > newfile
some notes I want to save in newfile.
CTRL-D

This creates a new file (named newfile). You type as much text as you wish, then type ctrl-D to save the file. You can backspace over mistakes, but you cannot go to a previous line after you press the enter key. I often teach this particular option of cat to novice Unix users, who occasionally need to create simple files, but don't want to learn vi or other simple editors. There may be Unix systems without vi or your favorite editor, but cat is always there.

The operator >> can also be used to append notes to the end of newfile:

cat >> newfile
Adding another note to newfile.
CTRL-D
cat Switches

Like most Unix commands, the behavior of cat can be modified by command line switches. If you use the diff command to compare files, it will show you the numbers of lines that differ between the files. However, most files don't have line numbers. Use cat with the -n switch to number each line of a file:

cat -n kittens > num_kittens

The file num_kittens is kittens with a number in front of each line, including blank lines. Use the -b switch to number only lines that are not blank.

One last cat trick: using the -v switch will show you “hidden” characters, such as control characters that may not show up in your editor. Try this experiment:

cat > catestv
CTRL-v testing CTRL-O Testing esc-b
CTRL-D

If we use cat to view the file, we see only the normal text:

cat catestv
Testing Testing
To see what's actually in the file, use the -v option:
cat -v catestv
^V Testing ^O Testing ^[b
Here, a ^ in front of a character signifies a control character. (CTRL-[ is the same as ESC).

Patrick Hill (apathos@bham.net) is a computer engineer at Alabama Power Company in Birmingham, Alabama. He is known around the office as the guy who uses cat for an editor.

__________________________


Special Magazine Offer -- 2 Free Trial Issues!
Receive 2 free trial issues of Linux Journal as well as instant online access to current and past issues. There's NO RISK and NO OBLIGATION to buy. CLICK HERE for offer

Linux Journal: delivering readers the advice and inspiration they need to get the most out of their Linux systems since 1994.

Sorry, offer available in the US only. International orders, click here.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
enigma index mp3's picture

linux

On October 2nd, 2007 enigma index mp3 (not verified) says:

2.2.x ifconfig Why with does kernels? incorrect show statistics . Best regards.

krux enigma ezb mp3 download's picture

linux

On October 2nd, 2007 krux enigma ezb mp3 download (not verified) says:

can Where get I help? further Thanks.

Anonymous's picture

Re: Take Command: cat

On May 29th, 2003 Anonymous says:

Good examples. Something puzzles me though. I am taking a Unix class using Solaris 2.8 on Sun workstations, but I do my practicing on a PC with Linux (RedHat 8). In Unix you can create a new file with:

cat fileName
blah blah
Ctrl-D

But with Linux this produces a "no such file" error, so you must explicitely redirect the output with:

cat > fileName ...

I have tried it with all of the shells installed and get the same. I wonder why the difference?

Anonymous's picture

Re: Take Command: cat

On January 5th, 2002 Anonymous says:

i am very thankful for the detailed information

of the cat command. many of the linux sites

are not having the basic information of cat

command which is must. i pity the negligence

attributed by the linux site maintainers.

any how i am thankful for the detailed and

friendly information.

thanking you

Post new comment

Please note that comments may not appear immediately, so there is no need to repost your comment.
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <pre> <ul> <ol> <li> <dl> <dt> <dd> <i> <b>
  • Lines and paragraphs break automatically.

More information about formatting options

Featured Videos

The November 13, 2008 edition of Linux Journal Live! Shawn Powers and special guest, Linux Journal Author Daniel Bartholomew, talk e-book readers and Daniel's Kindle, DRM, and other goodness.

From the Magazine

December 2008, #176

The Oxford English Dictionary says the word "gadget" is a placeholder name for a technical item whose precise name one can't remember. Like that book-reader thingy from Amazon...what's it called? Spindle, Gindle...Kindle, that's it. Check it out in this month's gadget issue.

Other gadgets covered include the Nokia tablets, the BlackBerry, the Neo FreeRunner, the Dash Express, the Roku Netflix Player, the Kangaroo TV, The TomTom GO 930 and the MooBella Ice Cream System. On the larger hardware front, read the reviews of the Acer Aspire One and the YDL PowerStation. On the software front, check out the articles and columns on memcached, Samba security, Mutt, desktop gadgets, bash and Puppet. To wrap it all up, read Doc's thoughts on Google and the browser platform.

Read this issue

Sign up for our Email Newsletter