The cat command is very useful in Linux. It has three main functions related to manipulating text files: creating them, displaying them, and combining them.

Related: How to Quickly Create a Text File Using the Command Line in Linux

We've discussed using the cat command (among others) to create and view text files on the command line in Linux. But let's assume you have three text files: file1.txt, file2.txt, and file3.txt. You want to combine (or concatenate) them into one text file containing information from all three, in that order. You can do this with the cat command as well.

Simply open a Terminal and type the following command:

cat file1.txt file2.txt file3.txt

Obviously, replace the file names in the above example with your own.

The combined contents of the three text files will appear in your terminal.

01_basic_cat_command

Related: Become a Linux Terminal Power User With These 8 Tricks

Typically, though, you'll probably want to combine those text files into another text file, not just print the results to the screen. Luckily, this is very simple. All you need to do is add an output redirection symbol (>) after the list of files being concatenated, and then specify the name of the final text file.

cat file1.txt file2.txt file3.txt > file4.txt

NOTE: The file listed after the output redirection symbol will be overwritten, if it already exists. So, be careful when specifying the name of the combined text file. We'll show you later in this article how to append files to the end of an existing file.

If you open file4.txt (either with the cat command or with the text editor of your choice), you should find that it contains the text of the first three text files.

02_redirecting_cat_command

If you're combining lists of items from multiple files and you want them alphabetized in the combined file, you can sort the combined items in the resulting file. To do this, enter the basic cat command we previously showed you followed by the pipe command (|) and the sort command. Then, type the output redirection symbol (>) followed by the name of the file into which you want to copy the combined text. All the lines of text in the result file will be sorted alphabetically.

cat file1.txt file2.txt file3.txt | sort > file4.txt

03_concatenating_and_sorting

As we mentioned earlier, there is also a way append files to the end of an existing file. Type the cat command followed by the file or files you want to add to the end of an existing file. Then, type two output redirection symbols (>>) followed by the name of the existing file you want to add to.

cat file5.txt >> file4.txt

04_appending_a_file_to_end_of_existing_file

If you want to add a bit of new text to an existing text file, you use the cat command to do it directly from the command line (instead of opening it in a text editor). Type the cat command followed by the double output redirection symbol (>>) and the name of the file you want to add text to.

cat >> file4.txt

A cursor will appear on the next line below the prompt. Start typing the text you want to add to the file. When you're done, press Enter after the last line and then press Ctrl+D to copy that text to the end of the file and quit cat.

05_appending_a_line_from_the_standard_output

Related: How to Get Help With a Command from the Linux Terminal: 8 Tricks for Beginners & Pros Alike

If you end up with a very long file once you combine your text files, you can use the pipe symbol with the less command when viewing the file in the Terminal window. For example, cat file4.txt | less. We discuss using the less command in this article.

Linux Commands

Files

tar · pv · cat · tac · chmod · grep ·  diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

Processes

alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap

Networking

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts