Welcome to this spoken tutorial on Linux File System.
I am using Ubuntu 10.04.
We assume that you know how to get started with the Linux operating system and have some basic idea about commands.
If you are interested, it is available through another spoken tutorial, on the following website http://spoken-tutorial.org
Also note that Linux is case sensitive.
All the commands used in this tutorial are in lower case unless otherwise mentioned.
In Linux almost everything is a file.
So what is a file? In real life, we know that a file is where we store our documents and papers.
Similarly, in Linux a file is a container for storing information.
Next, what is a directory?
A directory can be understood as a collection of files and other (sub)directories.
A directory helps us in organizing our files in a systematic manner.
This is like what we call folders in Windows.
It allows different users to have their own directories with their files which others cannot access or modify.
Also, if there are no directories, all the files on the system need to have unique names which would be very difficult to maintain.
Though these definitions of files and directories are good to get a general feel about them, they are not entirely accurate.
As well as its contents, a file has a name and some properties or “administrative information”; that is, the file’s creation/modification date and its permissions.
The properties are stored in the file’s inode, a special block of data in the file system that also contains the length of the file and where on the disk it’s stored.
The system uses the number of the file’s inode; the directory structure just names the file for our benefit as its easier for us to remember names than large numbers.
Contrary to its oversimplified definition, a directory doesn't actually store other files ,it is itself a file that holds the 'inode' numbers and names of other files.
In fact, in Linux there are three kinds of files:
1 Regular Files or Ordinary files: It contains only data as a stream of characters.
2 Directories: As we just saw in the previous slides.
3 Device Files: All hardware devices and peripherals are represented as files in Linux.
A CD, a Hard disk or even an 'usb' stick, everything is a file in Linux. But why is this so? This helps to read and write these devices in a way similar to that for ordinary files.
All files in Linux are related, in short all form a family much like we do.
A directory containing say some files and sub-directories will have a parent – child relationship with each other. This gives rise to the Linux File System Tree.
At the top is the root (denoted by a front-slash /). It contains all the other files and directories.
This also helps in easy navigation from one file or directory to other, if we know the correct path.
As we work with a Linux file system, it seems that we are moving along this tree.
One command and there you are teleported from one place to other.
Sounds interesting!! Indeed it is. As we will see.
When we login into the Linux system we are by default in a home directory.
Now, switch to the terminal.
Ctrl+alt+T helps to start a terminal in Ubuntu.
This command may not work in all Unix systems, however. A general procedure to open a terminal is already explained in another spoken tutorial.
To see the home directory , Type at the command prompt: "echo space dollar H-O-M-E in capital" and press Enter.
This gives the pathname of our home directory.
We can move around from one directory to other.
But, any time we can be in one directory and this directory is known as the current directory or working directory. Now go back to slides.
The pwd command helps us to see the current directory. 'pwd' stands for present working directory.
Type at the command prompt: "pwd" and press Enter. Now this is our present working directory.
We have said that we can move from one directory to other.
But how do we do so? We have the cd command for this purpose.
You have to type the command cd followed by the 'pathname' of the directory you want to move to.
Lets again see our current directory by typing pwd at the command prompt and press Enter.
So, now we are placed in this directory.
Now say we want to move to slash usr directory. So, type "cd space slash usr" . Remember here slash in Linux means front slash and press Enter.
Now let's see our current directory. Type pwd and press Enter.
Yes! We have moved to slash usr (/usr) directory.
The problem here is, the pathnames can be very long, this is because these are Absolute Pathnames that enlist the entire path staring from the root directory.
Instead we may use Relative pathnames that begin from the current directory.
Here we need to know two special characters. dot that represent the current directory and dot dot that represent the parent directory of the current directory.
Now, let us have a brief session on cd command.
The command cd without any argument is used to move back to the home directory.
Type at the command prompt: "cd" and press Enter.
Now check our current directory by the pwd command.
So, now we are back in our home directory /home/gnuhata [ narration- slash home slash gnuhata ]
Now, let us move to music directory. Type at the command prompt: "cd space Music(M in capital) slash" and press Enter.
Now check our current directory by the 'pwd' command. pwd and press Enter. See, we have moved /home/gnuhata/Music
Let us go to the parent directory from Music. For that, you have to use cd command with 'dot dot'.
Type at the command prompt: cd space dot dot and press Enter.
Now, check our present directory by typing pwd. We are again in /home/gnuhata.
Now let's try to move to a subdirectory of the current directory using dot.
Type at the command prompt: cd space dot slash Documents(D in capital) slash. Press Enter.
Check our current directory by typing 'pwd'. We are at /home/gnuhata/Documents.
Let me clear the screen by pressing control L. So you can see clearly.
To go back to our home directory by 'cd' command, type cd and press Enter.
Again check our current directory by 'pwd' command. We are back to /home/gnuhata .
We can combine any number of .. [narration - dot dot] separated by / [narration- slash] in a relative path .
In this slide, we can see the file system hierarchy. Root or '/' is at the top. home and bin are two sub-directories under root. username , here the directory named gnuhata is a sub-directory under home.
So, now we are in /home/gnuhata. Now how can we go to the 'bin' directory?
Type at the command prompt: "cd space dot dot slash dot dot slash bin" and press Enter.
Check our current directory by the command pwd. We are at /bin [narration - slash bin]
The first .. [narration-dot dot] takes us from /home/gnuhata [narration - slash home slash gnuhata] to /home [narration - slash home].
The next takes us from /home to root.
Now from '/' or 'root', we have moved to '/bin' directory.
Go back to our home directory by the command 'cd'.
To create a directory, we use the mkdir command.
You have to type the command and name of directory to be created and a directory would be created under the current directory.
To create a directory named 'testdir', type the command: "mkdir space testdir" and press Enter.
This creates the 'testdir' directory successfully.
Note that, there is no explicit notification of successful directory creation or removal.
If you do not get any error message, it denotes successful execution.
We can also use the relative or absolute pathname to create a directory anywhere in the tree provided we have the permission to do so and a directory by that name does not already exist.
This process can be used for making multiple directories or even a hierarchy of directories.
Type "mkdir space test1 space test2" and press Enter ,this will make two directories named test1 and test2 under the present directory.
Type "mkdir space testtree space testtree slash test3".
This will make a directory 'testtree' and another directory 'test3' which is a sub-directory under 'testtree'.
So, we have created four directories namely testdir,test1,test2 and testtree in the current directory, out of which first three are empty and the last one contains a subdirectory namely test3.
Similar to mkdir is the rmdir command which is used for removing a directory or directories.
The command "rmdir space test1" removes the test1 directory successfully.
A directory can be removed only if you are its owner, your current directory is hierarchically above the directory to be removed and the directory is empty.
Now type at the command prompt: "cd space testtree slash test3"
So, we are now in test3 directory which is a subdirectory under testtree.
Lets try to remove the testdir directory by typing the command "rmdir space testdir". Press Enter.
We see it can't be done, because the current directory is not hierarchically above the directory to be removed.
So,we have to go to the directory which is hierarchically above testdir directory.
Type: "cd space dot dot" and press Enter.
Now, go back to our parent directory by typing the command "cd space dot dot".
Now, again try the previous command.
Type "rmdir space testdir". Press Enter.
The 'testdir' directory is successfully deleted. Note that, 'testdir' directory was also empty.
Multiple directories or a hierarchy of directories can be removed at once. So, try to delete the 'testtree' directory along with its subdirectory 'test3'.
Type at the command prompt: "rmdir space testtree space testtree slash test3" press Enter.
See, it is giving the error message that 'testree' directory cannot be removed because 'testtree' is not empty.
But one thing which you may miss is that testtree/test3 has been deleted as it was empty.
To check that, type at the command prompt "cd space testtree" and press Enter.
Now type "ls" and press Enter. See, the directory contains nothing. So, 'test3' was deleted.
So, in this Linux tutorial we have learnt about Linux Files and directories and how to work with Linux Directories. See them, move between them, make them, remove them.
This brings me to the end of this tutorial. Spoken Tutorials are a part of the Talk to a Teacher project, supported by the National Mission on Education through ICT.
More information on this is available at the following link.
This script has been contributed by ----------------------(name of the translator) and this is -----------------------(name of the recorder) from --------------------------(name of the place)signing off . Thanks for joining.