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.
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.
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.
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
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
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.
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.
|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|
|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|
|Networking||netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw|