Linux
Linux
help_outline
language
—/50
Start Lab
01:00:00
Introduction
Creating directories (folders)
Copying, moving and deleting files and directories (folders)
Searching in files
Conclusion
End your lab
Creating,
Modifying and
Removing Files
and Folders in
Linux
1 hourFree
Rate Lab
Introduction
Today, Linux is everywhere. Lots of the server systems behind your favorite websites are Linux-
based. As an IT Support Specialist, you'll most likely be interacting with Linux on a regular
basis, mainly through the command line. Actions like modifying configuration files and moving
or copying them may become part of your everyday tasks. File management in Linux is a super
important core skill to have as an IT Support Specialist. So, let's dive in!
Head's up: You'll experience a delay as the labs initially load (particularly for Windows labs).
So, please wait a couple of minutes for the labs to load. The grade is calculated when the lab is
complete, so be sure to hit "End Lab" when you're done!
What you'll do
You'll learn how to navigate a Linux file system from the command line and understand the
basics of creating, modifying, copying, and deleting files and directories. Your main learning
objective for this lab is to practice these commands in the Linux VM.
Learning tip
We encourage you to try and memorize all of these commands as best you can. With enough
practice, using Linux commands will become second nature to you. If you have access to your
own Linux machine, try out the commands as you follow along in the next section.
If you don't have Linux available on your local machine, no worries! You can type these
commands in a text editor, so you can refer back to them when you're doing the active lab
exercises.
Linux overview
Before we kick things off, below is a brief intro into the Linux file system.
The file system controls how data is stored and retrieved in a computer. All files and folders in a
Linux system are part of a bigger tree-like structure rooted at /. Files and folders are added to the
file system by appending them to this tree structure, and deleted by removing them. All file
names are case sensitive. When working with files and directories on the command line, special
characters, like space and brackets, have to be escaped using a backslash.
Note: This section consists of basic commands to help you explore the Linux file system. Do not
expect any interesting response back within this section, but they would be helpful in various
stages of the lab.
Here are a few helpful navigation commands to help you explore the Linux file system:
You can check out the contents of the current directory using the ls command.
ls
Copied!
content_copy
You can view more details about the files, like ownership and permissions, by adding the flag -
l to the ls command.
ls -l
Copied!
content_copy
You can see hidden files in the current directory by passing flag a to the ls command.
ls -a
Copied!
content_copy
You can find out where you are in relation to the rest of the file system using the pwd command.
pwd
Copied!
content_copy
You can navigate to different directories using the cd command.
cd /path/to/other/directory
Copied!
content_copy
You can check out the contents of a file using the cat command.
cat /path/to/file/file_name
Copied!
content_copy
For large input files, the less commands allows movement within the files. The syntax is similar
to that of the cat command, but you can move.
less /path/to/file/file_name
Copied!
content_copy
The command will provide you with a scrollable view of the content within the file, up to the end
of the file content. Scroll down using "Enter", and exit the view by pressing "q".
The rest of this lab will teach you how to create, copy, modify, and remove files and folders.
You'll need to start the lab before you can access the materials. To do this, click the green “Start
Lab” button at the top of the screen.
After you click the “Start Lab” button, you will see a shell, where you will be performing further
steps in the lab. You should have a shell that looks like this:
Creating directories (folders)
Directories (folders) in Linux are created using the mkdir command. The command takes the
directory name as the argument.
mkdir dir_name
Copied!
content_copy
Multiple directories can be supplied as arguments, and mkdir will create all of them.
Example 2
cd /home/user/Documents
Copied!
content_copy
student@ca721599e80e:~$ cd /home/user/Documents
student@ca721599e80e:/home/user/Documents$
Step 2: Show the contents of the file "colors" within the "Desktop" directory.
cat /home/user/Desktop/colors
Copied!
content_copy
red
blue
green
yellow
magenta
Step 3: Create the directories.
Create directories
Check my progress
Removing empty directories
To remove empty directories, use the rmdir command. The name of the directory to be removed
is passed as an argument.
rmdir dir_name
Copied!
content_copy
Multiple directory names can be passed as arguments, and rmdir will remove all of them.
Example 2
Options
rmdir takes only one option, which tells it to remove parent directories if they're also empty.
By default, the touch command is used to change the modification and access times of a file. If
the file doesn't exist, the touch command is used to create a file with default permissions.
Let's take a look at an example of how to use the touch command. In the current directory, we
can create an empty file called "empty_file":
touch empty_file
Copied!
content_copy
The touch command can take the c option to prevent a new file from being created.
Options
The cp command is used to make a copy of one or more directories or files. The command
takes at least one source name and one target name. If the target is a file, then the source must
also be a file. A copy of the source will be made with the new name supplied in target. If the
target name isn't specified, a copy of source will be made in the target directory under the same
name. If a file with the target name already exists in the target directory, it'll be replaced. If the
target is an existing directory, then all sources (one or more) will be copied into the target
directory. If the target is a directory that doesn't exist, then the source must also be a directory. A
copy of the directory and its contents will be made in target under the same name.
Copy the file "source_file" in the directory /home/user/ to the directory "duplicates" as
"target_file".
cp /home/user/source_file /home/user/duplicates/target_file
Copied!
content_copy
The duplicates directory now contains a copy of the original file.
mv
The move command is used to move one or more files or directories into a different location, or
rename them to a new name. You're required to pass at least one source and target file names or
directories. The mv command follows the rules for existing or non-existing directories or files, as
does cp.
Example 2
Move the file "source_file" in /home/user/ to the directory "moved_files" and give it the name
"target_name".
mv /home/user/source_file /home/user/moved_files/target_file
Copied!
content_copy
The original directory doesn't contain the file now. It's been moved to the new directory
"moved_files".
rm
The rm command is used to remove one or more files. You need to supply at least one argument
to remove.
Example 3
We can remove the duplicate file we created in the directory "duplicates" using rm
rm /home/user/duplicates/target_file
Copied!
content_copy
Let's see how to copy, move, and rename files by going through a few examples.
In the directory /home/user/Pictures, we'll take all the hidden files and move them into the
directory /home/user/Documents/Hidden
cd /home/user/Pictures
Copied!
content_copy
student@ca721599e80e:~$ cd /home/user/Pictures
Step 2: Show the directory contents, including hidden files.
ls -a
Copied!
content_copy
student@ca721599e80e:~$ cd /home/user/Pictures
student@ca721599e80e:/home/user/Pictures$ ls -a
. .. .apple .banana .broccoli .milk chocolate egg
Step 3: Move the hidden files into the target directory.
cd /home/user/Pictures
Copied!
content_copy
mv /home/user/Images/Vacation.JPG .
Copied!
content_copy
student@ca721599e80e:~$ cd /home/user/Pictures
student@ca721599e80e:/home/user/Pictures$ mv
/home/user/Images/Vacation.JPG .student@ca721599e80e:/home/user/Pictures$
ls
'Europe Pictures' Vacation.JPG chocolate egg
Click Check my progress to verify the objective.
Best_of_the_90s
80s_jams
Classical
Rock (folder)
Step 1: Navigate to the Music folder.
cd /home/user/Music
Copied!
content_copy
Step 2: Remove files.
rm -r non_empty_dir
Copied!
content_copy
Searching in files
grep
grep is a super powerful Linux command used to search through files for the occurrence of a
string of characters that matches a specified pattern. We can use the command in combination
with a bunch of different options and flags for efficient searching.
mv /home/user/Downloads/Iceland /home/user/Downloads/Japan
/home/user/Documents
Copied!
content_copy
Click Check my progress to verify the objective.
Lots of Linux distributions come with pre-installed text editors. The most popular ones are vi and
nano, which will be included in nearly every distribution. Other text editors, like Emacs and
Gedit, might also be present. In this lab, we'll modify files using the Nano editor.
You can use the nano command to open the Nano editor and modify an existing file, or create a
new one. To edit an existing file, we'll first start with opening it.
nano /path/to/existing/file
Copied!
content_copy
The command will open the file in the terminal and display the current file contents. To modify,
you can edit the content in the terminal, just like a normal editor. The editor is managed using
various shortcuts.
CTRL-X
Copied!
content_copy
NB: At any point in using the editor, you can get help using Ctrl+G
CTRL-G
Copied!
content_copy
To exit help mode, use Ctrl+X
CTRL-X
Copied!
content_copy
Alright, now let's practice how to edit files using nano.
touch editor_test.txt
Copied!
content_copy
Open the file with the Nano editor.
nano editor_test.txt
Copied!
content_copy
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
^G Get Help ^O Write Out ^W Where Is ^K Cut Text ^J Justify
^X Exit ^R Read File ^\ Replace ^U Uncut Text ^T To Spell
Add content to the file. (In this case, we add five lines, each separated by an empty line.)
Knock Knock
<br>
Who's there ?
<br>
very long pause...
<br>
java.
<br>
:-)
<br>
<br>
<br>
<br>
^G Get Help ^O Write Out ^W Where Is ^K Cut Text ^J Justify
^X Exit ^R Read File ^\ Replace ^U Uncut Text ^T To Spell
Save the file by hitting Ctrl+O
CTRL-O
Copied!
content_copy
Knock Knock
<br>
Who's there ?
<br>
very long pause...
<br>
java.
<br>
:-)
<br>
<br>
<br>
<br>
File Name to Write: editor_test.txt
^G Get Help M-D DOS Format M-A Append M-B Backup File
^C Cancel M-M Mac Format M-P Prepend ^T To Files
You'll need to confirm the file that you want to write the content to by hitting Enter. After this,
exit the program by hitting Ctrl+X
CTRL-X
Copied!
content_copy
That's it! You've successfully created and modified a file.
Conclusion
In this lab, we've gone through the basics of creating, modifying, copying, and removing files
and folders in Linux. As always, you can learn more about each of the commands we've covered
by using the man command. Make sure to practice these commands so that you get comfortable
using them.
Checking permissions
Before you can even begin changing the permission of a file or folder, you need to first
check the permissions of the specific file/folder. To display ownership and permissions
for a file, you can use ls with the -l flag and the name of the file you're interested in with
the command ls -l [FILENAME]
cd ../qwiklab/documents
Copied!
content_copy
Check out its current permissions with this command, and take a look at the output
below:
ls -l important_document
Copied!
content_copy
-rw------- 1 student student 16 Aug 4 11:38 important_document
You can see that it's owned by the "root" user, and that the owner has read and write
(but not execute) permissions while everyone else has none at all.
Changing file permissions
Now, change the permissions of "important_document" (from the previous step) so that
the owner has execute permissions on top of their current permissions. To do this, you'll
use the chmod command, with the argument 700. The two zeros keep everyone, but
the owner, from having any permissions at all, and the seven grants all available
permissions to the owner (including execute). Keep in mind that because the file is
owned by "root" you'll need to use sudo:
content_copy
You can check the permissions from the below command. You'll now see that the
execution permission has been added:
ls -l important_document
Copied!
content_copy
-rwx------ 1 student student 16 Aug 4 11:38 important_document
Click Check my progress to verify the objective.
cd ..
Copied!
content_copy
In this directory there's a folder called "secret_folder". View its current permissions
using ls, this time with the -ld flag rather than -l because you're viewing a directory
instead of a normal file:
ls -ld secret_folder/
Copied!
content_copy
drw-r--r-- 2 root root 4096 Aug 4 11:38 secret_folder/
As you can see, the owner of the file (the root user) has read and write permissions,
and everyone else can read only.
The goals for the lab, related to this file, are below:
Previously, we used a numerical argument to set the permissions for a file. If you want
to avoid figuring out the number that matches the permission levels, you can use an
alternate syntax. To satisfy the first condition, you only need to add the execute
permission to the owner, since they already have read and write permissions. To add
execute to the owner's permission, you can use the command below. (Note that "u"
stands for "user" and "x" stands for "execute".)
ls -ld secret_folder/
Copied!
content_copy
drwxr--r-- 2 root root 4096 Aug 4 11:38 secret_folder/
Now you can fix the group's permission. They currently have read permission and don't
have write permission, which you can fix with two similar commands. These can be
done in either order; "g" stands for "group" (like "u" from before), and "w" and "r" stand
for "write" and "read" respectively:
ls -ld secret_folder/
Copied!
content_copy
drwx-w---- 2 root root 4096 Aug 4 11:38 secret_folder/
Using chmod this way is easier to remember, but takes lots more commands. All the
previous steps could also have been done using the numerical notation, like this:
cd/home/lab