In 2017, I bought a new laptop and switched to Linux. I started off with Ubuntu (but jumped to Elementary later), as most people suggested it was beginner friendly.

People also suggested that I should get used to using the keyboard and terminal over a mouse to enjoy the ultimate power of Linux.

So I started learning various terminal commands and keyboard shortcuts. The fact that I could type pretty fast was a cherry on the cake.

In this article, I'll walk you through the experiences I had learning to handle file and folder operations in Linux.

Prerequisites

Before starting to use terminal, you need to get familiar with two commands. They'll come in handy for whatever operations you're trying to do.

They are the cd and ls commands.

  • cd is a command that lets you navigate to a path or a different folder in terminal
  • ls is a command that lets you list all the files and folders in a directory

How I Started Learning Some Basic Linux Commands

I love downloading and reading files and books from the internet. But I used to have a bad habit of downloading all the files into the Downloads folder.

One day I was in a hurry to search a document, because I had to give a presentation. But opening and searching through the long list of files in my Downloads folder was really frustrating for me as it had 1000+ files.

I wanted to find a shortcut to identify the file. The only clue I had was that it's a PDF document. So, I planned to copy all the PDF files to another temporary folder.

How to copy only PDF files from one folder to another

cp is the command to copy the files. Thankfully the Linux terminal supports regex almost everywhere. So, my work became quite simple. Here's the code to copy the pdf files into another folder:

cp <file(s)_to_copy> <destination_folder>
cp - Terminal command to copy files and folders
image-252
How to copy only the pdf files from one folder to another? 

From the above screenshot, you may be confused about the mkdir Temp_PDF_Files command. You use the mkdir command to create a new directory.  

Some of you might also be confused with ./*.pdf in the cp command. Basically, in the programming world we call this a Regex. Regex stands for Regular Expression, and we use them to filter items by matching patterns. In our case, it's the files ending with the .pdf extension

After running the command, there were fewer than 50 PDF files. I was able to find the file in couple of minutes.

So as you can see, it's always advisable to categorize your downloaded files.

Cool, I was done with my presentation. But, I wanted the file to be named properly, so that I could find it more quickly in the future.

How to rename a file in Linux

I Googled to learn how to do this, but I was amazed to see the same answer everywhere, which I felt was not right. It was the mv command, which I ideally used to move a file/directory from one path to another.

After digging down further, I found that it was the same mv command to rename the file.

mv <existing_file_name> <new_file_name>
mv - Terminal command to rename a file
image-253
How to rename a file in Linux? 

I finished renaming the file. But, I didn't want the temporary folder which I'd created to copy all the PDF files.

How to delete a folder completely in Linux (including it's files and sub-folders)

Before getting into this, I copied the renamed file to a safe place which I could remember easily in the future. I was bit nervous as I was about to delete the entire folder. I usually get this feeling whenever I delete anything.

You can delete files and folders with rm -rf command which I'd used many times before.

rm -rf <folder_name>
rm -rf - Terminal command to remove a folder and all it's contents
image-254
How to delete a folder completely in Linux? 

But be careful as it's a dangerous command. It won't ask for any confirmation before deleting the folder. Recovering a folder deleted with this command is almost impossible.

How to Create and Read Files in Linux

People usually get stressed out when they're late, and this is worse for important meetings or online classes. This happened to me – and it led me to a great experience of learning about handling file operations via the terminal.

It was a bright morning and my online class had already started – and I was delayed by 2 minutes. I wanted to start taking notes, but I had put my notebook and pen somewhere the night before and couldn't remember exactly where.

The very next thing that came to my mind was to open Google Docs. But that site would take some time to load.

"Why don't I create a text file on my machine and start taking notes? ", was the question that hit my mind next.

How to create a file in Linux

I remembered that one of my friends told me that you can use the touch command to create a file instantly. But, I hadn't tried that out yet. So I did:

touch notes.txt
touch - Terminal command to create a file
image-266
touch - Linux command to create a file

But... But... But...  

This command creates a file and does not open this file in edit mode so you can start taking notes. This is where you can use your favorite text editor to open a file.

vim and nano are the two well-known text editors available in Linux.

vim is an advanced and powerful text editor you can use to perform complex file operations and it's what many Linux System Administrators use.

nano, on the other hand, is a simple text editor which you can use to perform simple file operations.

I was using nano, so I ran the command nano notes.txt. This opens up the text file in edit mode instantly. I started taking notes from the session.

Finally, I reached the end of class, but I didn't know to save the file. I didn't dare try any commands before getting a backup of my notes. So, I picked up my mobile and took a snap of my notes.

After a quick Google search, I found that the command was "CTRL + X" to save the file (which will prompt Yes / No to save the file, and hitting "Y" and pressing "Enter" will save it).

After saving the file, I was curious to check if I had saved it correctly.

How to read the contents of a file in Linux

After doing a Google search, I found that there are multiple ways to read a file. cat, head, and tail are a few commands you can use to read a file, and they each have their own use cases.

  • The cat command displays the entire contents of the file
  • The head command displays the few lines at the top of the file usually used to check if you're about to open the correct file
  • And the tail command displays the bottom few lines of the file usually used to read logs from any process.

Here's an example of the cat command:

cat notes.txt
cat - Terminal command displays the entire content of the file
image-268
Reading contents on my notes file with cat command

And here's the output of the head and tail commands:

image-269
Output of head command displaying top few lines of notes file
image-270
Output of tail command displaying last few lines of notes file

How to read the contents of a file with line numbers in Linux

One day, one of my colleagues asked me, "Hey! Do you know how to display the contents of a file with their line numbers in the terminal? "

I hadn't came across any such commands explicitly available for this. I knew I could write a script that reads the file line by line, and then print them on the console by pre-pending line numbers for each line.

He wanted to explore that option.

We both started to work our way through this problem. Interestingly, in the middle, we found a single and straightforward command.

Yes – I'm talking about the nl command. You use it like this:

nl notes.txt
nl - Terminal command to read the contents of the file with line numbers
image-271
nl command shows contents of file with line numbers

That's amazing, isn't it? As you can see from the code above, the nl command shows the contents of the file with line numbers.

Linux Commands I Learned from My Team

My team and I used to sit together and work as a group. We would ask questions about any random technical stuff and tried to explore solutions for any issues that came up. So I wanted to quickly summarize some of the things I learned from my colleagues here.

Most of them revolve around a lot of file utility commands available in Linux which most people are unaware of. During our development time, we come across multiple scenarios that had to do with handling files.

My colleague Naras asked this question:

What's a command to find the properties of a file?

Well, the stat command displays the properties of the file such as name, size, permissions, created by the user, created and updated date and time, and so on. It looks like this:

image-272
stat - Terminal command to display the properties of the file

Is there a command to find number of words in a file?

It was an awesome question from Udhaya.

Yes. But, not just words – you can also count lines and bytes using the wc command.

image-273
wc command displays number of lines, words and bytes of a file

The above displayed file has 23 lines and 121 words. Its size is 809 bytes.

Can you find the type of the document with a command?

Few weeks back, I encountered an extraordinary question from Kumar:

"Most documents are created with their extension. But recently I found that some PDF documents are not created with .pdf extension. Do we have a command to find the type of document? "

Yes we do. The file command displays the type of the document, like this:

file notes.txt
file - Terminal command to display the type of file
image-275
file command displaying the type of notes.txt file

To answer his question, here's the proof showing the type as PDF document before and after removing the extension from the file name:

image-274
file command displaying file type without the extension

How can I find the occurrences of a word in a file?

My colleague Divad asked if we could find all the lines where a particular word was available in a file.

And I realized that this was possible with the grep command.

So what's grep?

grep stands for Global search for Regular Expression and Print out. It's basically a searching tool which matches with a Regex pattern and prints them.

grep -i "Linux" notes.txt
grep - Terminal command to filter out lines containing the match from the file
image-276
grep command displays lines containing Linux from notes.txt file

The -i flag indicates to perform case insensitive search. To perform case sensitive search, remove the -i flag from the command.

What if I want to find all the lines that don't contain a particular word?

Raman raised the question, "What if I want to find all the lines that does not contain the given word?"

It's possible using the same grep command but by applying the -v argument, like this:

grep -v "Linux" notes.txt
grep -v command filters out lines that does not contain the match from the file 
image-277
grep -v command displays lines not containing the word Linux from the notes.txt file

As you can see, by discussing our questions and working things out together, we learned a lot.

Conclusion

In this article, I've shared my experience using Linux when I was a beginner. I hope you enjoyed reading this article.

You can connect with me here.

You can follow me on Instagram, Twitter, LinkedIn and Medium.