This article is Part 2 of the LFCA series, here in this part, we will explain about Linux file system and cover the basic file management commands, that are required for the LFCA certification exam.
As you get started out in Linux, you’ll spend a great deal of time interacting with files and directories. Directories are also known as folders, and they are organized in a hierarchical structure.
In the Linux operating system, each entity is regarded as a file. In fact, there’s a popular statement in Linux circles that goes: ‘Everything is a file in Linux’. This is just an oversimplification and in the real sense, most files in Linux are special files that include symbolic links, block files, and so on.
Linux File System Overview
Let’s take a moment and have an overview of the main file types:
1. Regular Files
These are the most common file types. Regular files contain human-readable text, program instructions, and ASCII characters.
Examples of regular files include:
- Simple text files, pdf files
- Multimedia files such as image, music, and video files
- Binary files
- Zipped or compressed files
And so much more.
2. Special Files
These are files that represent physical devices such as mounted volumes, printers, CD drives, and any I/O ) input and output device.
A directory is a special file type that stores both regular and special files in a hierarchical order starting from the root
( / ) directory. A directory is the equivalent of a folder in the Windows operating system. Directories are created using the mkdir command, short for making the directory, as we shall see later on in this tutorial.
The Linux hierarchy structure starts from the root directory and branches out to other directories as shown:
Let’s understand each directory and its usage.
- The /root directory is the home directory for the root user.
- The /dev directory contains device files such as /dev/sda.
- Static boot files are located in the /boot directory.
- Applications and user utilities are found in the /usr directory.
- The /var directory contains log files of various system applications.
- All system configuration files are stored in the /etc directory.
- The /home directory is where user folders are located. These include Desktop, Documents, Downloads, Music, Public, and Videos.
- For add-on application packages, check them out in the /opt directory.
- The /media directory stores files for removable devices such as USB drives.
- The /mnt directory contains subdirectories that act as temporary mount points for mounting devices such as CD-ROMs.
- The /proc directory is a virtual filesystem that holds information on currently running processes. It’s a strange filesystem that is created upon a system boot and destroyed upon shutdown.
- The /bin directory contains user command binary files.
- The /lib directory stores shared library images and kernel modules.
Linux File Management Commands
You will spend a great deal of time interacting with the terminal where you will be running commands. Executing commands is the most preferred way of interacting with a Linux system as it gives you total control over the system compared to using the graphical display elements.
For this lesson, and the coming lessons, we will be running commands on the terminal. We are using Ubuntu OS and to launch the terminal, use the keyboard shortcut
CTRL + ALT + T.
Let’s now delve into the basic file management commands that will help you create and manage your files on your system.
1. pwd Command
pwd, short for the print working directory, is a command that prints out the current working directory in a hierarchical order, beginning with the topmost root directory
( / ).
To check your current working directory, simply invoke the pwd command as shown.
The output shows that we are in our home directory, the absolute or full path being /home/tecmint.
2. cd Command
To change or navigate directories, use the cd command which is short for change directory.
For instance, to navigate to the /var/log file path, run the command:
$ cd /var/log
To go a directory up append two dots or periods in the end.
$ cd ..
To go back to the home directory run the cd command without any arguments.
NOTE: To navigate into a subdirectory or a directory within your current directory, don’t use a forward slash
( / ) simply type in the name of the directory.
For example, to navigate into the Downloads directory, run:
$ cd Downloads
3. ls Command
The ls command is a command used for listing existing files or folders in a directory. For example, to list all the contents in the home directory, we will run the command.
From the output, we can see that we have two text files and eight folders which are usually created by default after installing and logging in to the system.
To list more information append the
-lh flag as shown. The
-l option stands for long listing and prints out additional information such as file permissions, user, group, file size, and date of creation. The
-h flag prints out the file or directory size in a human-readable format.
$ ls -lh
To list hidden files, append the
$ ls -la
This displays hidden files which start with a period sign
(.) as shown.
.ssh .config .local
4. touch Command
The touch command is used for creating simple files on a Linux system. To create a file, use the syntax:
$ touch filename
For example, to create a file1.txt file, run the command:
$ touch file1.txt
To confirm the creation of the file, invoke the ls command.
5. cat Command
To view the contents of a file, use the cat command as follows:
$ cat filename
6. mv Command
The mv command is quite a versatile command. Depending on how it is used, it can rename a file or move it from one location to another.
To move the file, use the syntax below:
$ mv filename /path/to/destination/
For example, to move a file from the current directory to the Public/docs directory, run the command:
$ mv file1.txt Public/docs
Alternatively, you can move a file from a different location to your current directory using the syntax shown. Take note of the period sign at the end of the command. This implies this location’.
$ mv /path/to/file .
We are now going to do the reverse. We will copy the file from the Public/docs path to the current directory as shown.
$ mv Public/docs/file1.txt .
To rename a file, use the syntax shown. The command removes the original file name and assigns the second argument as the new file name.
$ mv filename1 filename2
For example, to rename file1.txt to file2.txt run the command:
$ mv file1.txt file2.txt
Additionally, you can move and rename the file at the same time by specifying the destination folder and a different file name.
For example to move file1.txt to the location Public/docs and rename it file2.txt run the command:
$ mv file1.txt Public/docs/file2.txt
7. cp Command
The cp command, short for copy, copies a file from one file location to another. Unlike the move command, the cp command retains the original file in its current location and makes a duplicate copy in a different directory.
The syntax for copying a file is shown below.
$ cp /file/path /destination/path
For example, to copy the file file1.txt from the current directory to the Public/docs/ directory, issue the command:
$ cp file1.txt Public/docs/
To copy a directory, use the
-R option for recursively copying the directory including all its contents. We have created another directory called tutorials. To copy this directory alongside its contents to the Public/docs/ path, run the command:
$ cp -R tutorials Public/docs/
8. mkdir Command
You might have wondered how we created the tutorials directory. Well, it’s pretty simple. To create a new directory use the mkdir ( make directory) command as follows:
$ mkdir directory_name
Let’s create another directory called projects as shown:
$ mkdir projects
To create a directory within another directory use the
-p flag. The command below creates the fundamentals directory inside the linux directory within the parent directory which is the projects directory.
$ mkdir -p projects/linux/fundamentals
9. rmdir Command
The rmdir command deletes an empty directory. For example, to delete or remove the tutorials directory, run the command:
$ rmdir tutorials
If you try to remove a non-empty directory, you will get an error message as shown.
$ rmdir projects
10. rm Command
The rm (remove) command is used to delete a file. The syntax is quite straightforward:
$ rm filename
For example, to delete the file1.txt file, run the command:
$ rm file1.txt
Additionally, you can remove or delete a directory recursively using the
-R option. This could either be an empty or a non-empty directory.
$ rm -R directory_name
For example, to delete the projects directory, run the command:
$ rm -R projects
11. find and locate Commands
Sometimes, you may want to search the location of a particular file. You can easily do this using either the find or locate commands.
The find command searches for a file in a particular location and takes two arguments: the search path or directory and the file to be searched.
The syntax is as shown
$ find /path/to/search -name filename
For example, to search for a file called file1.txt in the home directory, run:
$ find /home/tecmint -name file1.txt
The locate command, just like the find command, plays the same role of searching files but only takes one argument as shown.
$ locate filename
$ locate file1.txt
The locate command searches using a database of all the possible files and directories in the system.
NOTE: The locate command is much faster than the find command. However, the find command is much more powerful and works in situations where locate does not produce the desired results.
That’s It! In this topic, we have covered the basic file management commands that will give you the know-how in creating and managing files and directories in a Linux system.