It's easy to add a few lines of text to files on Linux, but there are tools that make it easier to add many lines. Credit: EFKS / Getty Images There are a number of ways to add text to files on Linux systems without having to open an editor, such as the echo and printf commands. On the other hand, when you need to add A LOT of text, the technique you use can make the job tedious or a piece of cake. This post describes some of the commands you can use and the problems and benefits you can expect. Also see: How to loop forever in bash on Linux The echo commands append lines of text to existing files in a straightforward way: $ echo "text to be added to file" >> myfile $ echo "more text" >> myfile You can also use the printf command to append text, but keep in mind that by default it will not add a newline as if you hit the Enter key. Use a command like this with the n to include it: $ printf "appended textn" >> myfile When you want to build a script that will add a series of lines to a file, the echo and printf methods just shown can get a bit tiresome. One option is to add multiples lines with a single echo or printf command that includes newline characters like this: $ echo -e "text to be added to filenmore text" >> myfile $ printf "more text to be addednand so onnand so onn" >> myfile The -e option makes the echo command interpret the n sequences as newlines, so your file will include these lines: $ tail -5 myfile text to be added to file more text more text to be added and so on and so on You can also just type each line separately as long as you don’t end the quote until the end of the text. This type of multi-line echo requires that you start your echo command on one line with an opening double-quote (“), add quote-free lines and then close the echo command on the last line with a closing double-quote. Here’s an example of doing this on the command line: $ echo "There is more than one way to skin a cat > but skinned cats are never very cuddly. > You would be better off skinning a catfish and > likely less inclined to cuddle it afterwards." > cats $ cat cats There is more than one way to skin a cat but skinned cats are never very cuddly. You would be better off skinning a catfish and likely less inclined to cuddle it afterwards. If you want to add a large amount of text, however, even the multi-line echo command above can require more effort than it’s worth. Two other options are 1) putting the text into a separate file and appending the content of that file to the one you’re updating, and 2) adding the text using a script. Adding text using a separate file To add text from one file to the end of another, we could first create the file to be appended. Here’s an example using the addition of a warranty disclaimer to the end of a file detailing a product: $ cat warranty_disclaimer WARRANTY DISCLAIMER =================== The information provided about this product is not intended to provide any promise that it will work as advertised or that it will continue to work for any particular period of time. The seller accepts no responsibility for how the buyer uses it nor for any damages caused during or by its use. Once the text file is ready, run a command like this to append it: $ cat warranty_disclaimer >> cordless_drill In this and earlier examples, you need to be careful not to overwrite the target file by using a single “>”. Adding text using a script Another option is to add the lines using a script. For this, you can use a multi-line echo command like one of those shown above. The example script below uses this technique to add the warranty disclosure to any file provided as an argument to the script or provided at the prompt: #!/bin/bash if [ $# != 1 ]; then echo -n "file name> " read filename else filename=$1 fi if [ ! -f $filename ]; then echo "No such file: $filename" exit fi echo " WARRANTY DISCLAIMER =================== The information provided about this product is not intended to provide any promise that it will work as advertised or that it will continue to work for any particular period of time. The seller accepts no responsibility for how the buyer uses it nor for any damages caused during or by its use. " >> $filename If you have a file that ends like this: $ tail -2 cordless_drill Use this product to drill holes in things. Be careful not to drill holes in your pets or fragile objects that might break. You can add the disclaimer like this: $ add_disclaimer cordless_drill Verify the additional lines like this: $ tail -10 cordless_drill Use this product to drill holes in things. Be careful not to drill holes in your pets or fragile objects that might break. WARRANTY DISCLAIMER =================== The information provided about this product is not intended to provide any promise that it will work as advertised or that it will continue to work for any particular period of time. The seller accepts no responsibility for how the buyer uses it or for any damages caused during or by its use. One benefit of this approach is that you can easily insert your text into the script without adding commands. Just put it between the first echo and the redirection line. Note that the script shown above includes checks to see that a file name was specified and, if not, prompts for one. It also checks to ensure that the specified file exists. Scripts like this are a good option whenever you need to append lines of text to a lot of files. Wrap-Up There are many ways to append text to files on Linux, but to add a lot of lines, a script is likely one of your better options, especially if you need to do this repeatedly. You can use a script that includes the multi-line echo command as detailed above to add any amount of text to files. Related content how-to How to examine files on Linux Linux provides very useful options for viewing file attributes, such as owners and permissions, as well as file content. By Sandra Henry Stocker Oct 24, 2024 6 mins Linux how-to 8 easy ways to reuse commands on Linux Typing the same command again and again can become tiresome. Here are a number of ways you can make repeating commands – or repeating commands but with some changes – a lot easier than you might expect. By Sandra Henry-Stocker Oct 15, 2024 5 mins Linux news SUSE Edge upgrade targets Kubernetes and Linux at the edge SUSE Edge 3.1 includes a new stack validation framework and an image builder tool that are aimed at improving the scalability and manageability of complex Kubernetes and Linux edge-computing deployments. By Sean Michael Kerner Oct 15, 2024 6 mins Edge Computing Linux Network Management Software how-to Lesser-known xargs command is a versatile time saver Boost your Linux command line options and simplify your work with xargs, a handy tool for a number of data manipulation tasks. By Sandra Henry Stocker Oct 11, 2024 6 mins Linux PODCASTS VIDEOS RESOURCES EVENTS NEWSLETTERS Newsletter Promo Module Test Description for newsletter promo module. Please enter a valid email address Subscribe