3 Ways to create files in Linux real quick

Creating files in any operating systems is as obvious as breathing air to live. Here I show you 3 very common and most easy ways to create and write contents in that files. Let's just jump into it.


echo

echo commands is a built-in Linux feature that prints out arguments as the standard output. echo is commonly used to display text strings or command results as messages. But we can make files with appended contents also with it.

Creating files with echo

We can create files and add contents with echo in two different ways.

Single redirect and double redirect.

Single redirect or (>)

Single redirect is used for short notes or description, and it can't be appended. It usually beneficial when you want to note some crucial text as fast as possible.

 echo "Linux is awesome and fun to learn." > linuxislove.txt     ⏎

File named linuxislove.txt has been created with a cool sentence. Now you can display the contents of your file by using cat command. Here how:

cat linuxislove.txt    ⏎

Output:
Linux is awesome to learn

One crucial thing to remember is we can't append content in our files made from echo commands using single redirect.

As you try to write like this:

echo "But also very crucial these days.">linuxislove.txt    ⏎

When you write like this in hope that it will append as next sentence, but it will not. echo just overwrite the content inside and add new content "But also very crucial these days." omitting everything previously added.

cat linuxislove.txt    ⏎

Output:
But also very crucial these days.

You can see that our previously added text is overwritten by this words.

But you can append sentences by using double redirects. Follow along.

Double redirects or (>>)

Double redirects come into play when you want to append texts in your files. Using echo you can do that. Here how:

echo "Linux is awesome and fun to learn.">linuxislove.txt    ⏎

You can display the result by using cat command.

cat linuxislove.txt    ⏎

Output:
Linux is awesome and fun to learn.

Now the best part appending with echo.

echo "But also very crucial these days." >> linuxislove.txt    ⏎

Checking output

cat linuxislove.txt    ⏎

Linux is awesome and fun to learn.
But also very crucial these days.

cat

cat or concatenate files are used to print on the standard output, generally used to display file contents as you can see in our echo section where I used cat a lot to display/read the contents of linuxislove.txt file. But we can also use cat to create files with content inside by using redirect (>) or (>>) to write the content in it. cat is very similar to echo in terms of creating files, only difference is in their core functionality. echo is print as it is the message and cat is used to print the contents of any file inside. Both use single redirect and double redirect to insert texts inside files.

echo vs cat

So you don't get confused here is simple example to show you their core difference in their core functionality.

echo linuxislove.txt     ⏎ 

Output:
linuxislove.txt
cat linuxislove.txt    ⏎ 

Output:
Linux is awesome and fun to learn. But also very crucial these days.

Now you see the difference. It's huge difference isn't it.

echo is used to display what is written as it is, as name suggest (echo whatever written next). While cat is used to read the contents of file if any.

Creating files with cat

As I mentioned before when its time to create files and add contents with echo and cat, the differences is in their interfaces.

Single redirect or (>)

To create a file, we follow the cat command with a redirect, denoted with symbol (>), and name for the file we want to create. Here's an example.

cat > myFavOSisUbuntu   ⏎
The Linux Kernel today has well over 30 million lines of code as of 2022.
The most popular programming language used for the Linux Kernel is C, with nearly 98% of code written in C

When you press ENTER , Linux will go into interactive mode and wait for you to start entering content for the file. The prompt disappears, but just start typing freely with multi-line. note* you can't go to previous line by typing arrow-up key or in any ways.

When you finish typing till your heart content. Simply press Ctrl-D to exit the prompt.

Now you see your content by using cat command. Omit > sign from command and Linux will spit back the contents of your file.

cat myFavOSisUbuntu    ⏎ 

Output:
The Linux Kernel today has well over 30 million lines of code as of 2022.
The most popular programming language used for the Linux Kernel is C, with nearly 98% of code written in C

Now we try to append something with single redirect, as you might know that its not possible to append further content using only single redirect symbol (>). But for sake of curiosity we will do it.

cat > myFavOSisUbuntu    ⏎ 
Appended: hope 0%
Overwritten: certainty 100%

Press Ctrl-D to finish writing. Do cat will overwrite our file with new content or append it? Now let's see our file

cat myFavOSisUbuntu    ⏎ 

Output:
Appended: hope 0%
Overwritten: certainty 100%

As expected cat with single redirect (>) overwrite our file new content in it.

So what to do to append our file, now you know and guessed right, we will use double redirect (>>) to append/add contents.

Double redirects or (>>)

cat >> myFavOSisUbuntu    ⏎ 
Linux is everywhere.

Press Ctrl-D, now let see our file using cat command:

cat myFavOSisUbuntu    ⏎ 

Output:
Appended: hope 0%
Overwritten: certainty 100%
Linux is everywhere.

Last but not least.


touch

We can use all beloved command to create files in *nix world is by using touch command. When we see man page for touch, it says "change file timestamps".

man touch

Output:
TOUCH(1)                                            User Commands                                            TOUCH(1)

NAME
       touch - change file timestamps

SYNOPSIS
       touch [OPTION]... FILE...

DESCRIPTION
Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h is supplied.
A  FILE  argument string of - is handled specially and causes touch to change the times of the file associated
with standard output.
Mandatory arguments to long options are mandatory for short options too.

But simply we can create files with touch, when we don't need to fill with contents beforehand. Just create new file.

touch fileName

Now you can edit and add content with any text editor you want. I usually use Neovim for adding contents.

Use cat or echo when you want to note important notes immediately, usually text with short descriptions. And use touch to create files when you want to edit later with longer descriptions.


Bonus

You can also use text editors of your choice in terminal to create and add contents in your file at the same time(not entirely at the same time, but you can understand isn't).

For example: I use nvim command which is nothing but Neovim a powerful text editor for power users.

You can download Neovim from Here: https://neovim.io/

nvim myFile

You will enter Neovim's editor arena where you can add/edit contents in it and save and quit with :wq command.

View changes with cat command as usual.

cat myFile

So, yeah that's it for now, Linux is a wonderful ocean where you can get everything you want.

Happy learning and Happy sharing.