The directory is the most essential component of any operating system. We often use a common term folder for the directory. A directory is just like a container to hold either another directory or a file or both. So we have a list of tasks for the directory operation –
To create a new directory we use the mkdir command.
mkdir [option] directory_name
What else when we need to create multiple directories? So we can also achieve this using space between two directories. Like.
cd LearnLinux mkdir js css
Above all directories are siblings meaning this way we can only create a directory on the first level. But when we need to create a nested directive. We will use this command.
mkdir -p js/libs/graph
Here -p (parent) is a flag and it will create intermediate directories as required.
We can also create directories with the user required permission.
mkdir -m 777 LearnLinux
Here -m (mode) set the file permission bits of the final created directory to the specified mode.
To remove the directory we can use rmdir and rm commands.
rmdir [option] directory_name
But Here we have a twist cause rmdir only works for the empty directories.
An empty directory contains neither a directory nor a file. If you have an empty directory, it can be easily removed by rmdir. No other options are needed.
rmdir [option] directory_name
mkdir img rmdir img
Deleting a non-empty directive is a little tricky. Here we will use the rm command with the -r flag which means it will attempt to remove the file hierarchy rooted in each file argument.
mkdir img cd img touch graph cd .. rmdir img rmdir: img: Directory not empty rm -r img
Nested empty directory
A nested empty directory will delete the same as a normal directory remove.
mkdir -p js/libs/graph rmdir -p js/libs/graph
There is also a verbose mode that you may use. You might have already noticed that the rmdir command doesn’t show any result for successful commands. With this flag, you can see the related log on the screen. You can use also this mode for mkdir.
rmdir -v directory_name
mkdir -v js js rmdir -v js js
Traversing means how to navigate the directory or how we can travel from one directory to another. For that we can use the cd command means change directory command.
Parent to child
If your current directory contains another directory then it will be a parent and the contained directories are children. So we can navigate the parent to a child using the cd command.
mkdir js ls js cd js ls
Child to parent
To navigate child to parent we will use a special .. link. That always points to parents.
mkdir js ls js cd js ls cd .. ls js
To navigate the current working directory to the previous working directory. We will use – the option.
mkdir css ls css cd css ls cd - ls ~/Documents/Wayofwebs/LearnLinux
To change the place of any directory is just like the windows operating system cut and paste operation. You can use the mv command to move directories as well.
mv source_directory target_directory
In the above example, if the target_directory exists, the entire source_directory will be moved inside the target_directory. This means that the source_directory will become a sub-directory of the target_directory.
mkdir js scripts ls js scripts mv js scripts ls scripts
To create a replica of any directory. Just like the window operating system copy and paste operation. To create a copy we can use the cp command. Be careful cause because the directory would either empty or non-empty.
cp -r source_dir target_dir
mkdir js scripts ls js scripts cp js scripts cp: js is a directory (not copied). cp -r js scripts ls js scripts
Copy Multiple Directory
You can also copy multiple directories at once with the cp command in Linux. Just use it the same way you did for a single directory.
cp -r source_dir_1 source_dir_2 source_dir_3 target_dir
mkdir js scripts lib ls js lib scripts cp -r js lib scripts ls js lib scripts ls scripts js lib
Renaming the directory means changing the name of the directory. Here we will use the mv command.
mv source_directory path_to_non_existing_directory
mkdir js scripts ls js scripts mv js scripts ls scripts mv scripts libs libs
Viewing and Searching
Viewing the current working directory. This means all directories and files which contain the current directory. we can use the ls command. We have already used this command above.
touch index.html about.html ls about.html index.html
Searching means searching or finding some specific directory or file. We can use the find command.
touch index.html about.html find *.html home.html index.html