command line Linux Linux Comands Linux terminal shell (Command line) terminal tutorial Ubuntu

The Linux Terminal |

Introduction To Linux Terminal

1.1.The magic of Linux Terminal.

The Linux shell exists since Linux invented and it is nonetheless one of the crucial powerful methods for a consumer to interact with a system. There are literally thousands of totally different Linux distributions on the market but in case you look all of them from the command line perspective you can find out that each one of them are virtually the identical. The Linux Terminal is quick, mild, absolutely customizable, may be accessed remotely and so much more.

For a lot of the consumer initially Linux terminal is just a black window that appears a bit unfriendly however after you get used to it you will adore it.

I exploit Ubuntu on all my examples introduced here however the magic of Linux Terminal is that you need to use your favourite Linux distribution and nonetheless have the ability to comply with.

There are a number of terminal situations operating at the similar time in Linux O.S. and a lot of the occasions you possibly can access them through the use of key mixtures. In Ubuntu you need to use ctrl+alt+F1 to access the primary command line occasion ctrl+alt+F2 for the second and so on till the 6th. with ctrl+alt+F7 you possibly can entry the Graphic Consumer Interface. From there you possibly can open as many terminal emulators as you would like. these terminals could be began from the menu of the O.S. or in Ubuntu you need to use ctrl+alt+t.

At that point i assume that you already have a operating system and that you’ll be able to open a terminal. If not then now it’s a superb time to install a Linux system. You’ll be able to both use a physical machine or a virtual.

However let’s get began!

1.2.Who am I? Where am I? what time is it???

A Linux terminal emulator in Ubuntu is seem like the picture 1.1. Even without giving any instructions you’re still capable of get some info out of this.

Picture 1.1

This is what you get

[email protected]:~$

user1: is the user-name of the current consumer

@: the at signal between user-name and computer-name

allaboutlinuxeu: is the computer-name or host-name

So altogether it says that user1 is related to allaboutlinuxeu

the “:” signifies that the disk path is beginning here.

the “~” indicates that I am at present in my residence listing

the “$” signifies that I’m logged in as normal consumer (if i logged in as root this symbol will change to “#”)

Observe! This string [email protected]:~$ just isn’t commonplace. Different Linux distribution may give less or extra information. You can even customize that to fit your need however we’ll verify that on a next chapter.

Let’s begin with first question: Who am I?

At that time i need to point out that each one textual content with grey background are instructions or outputs from a terminal.

So now just sort “whoami”

[email protected]:~$ whoami
[email protected]:~$

After “$” you’ll be able to sort the command “whoami” and within the subsequent line is coming the output of that command and then the Shell is going again to idle and it is just waiting for the subsequent command. So I’ve successfully confirm that I am “user1”.

But where am I? go ahead and sort “pwd”

[email protected]:~$ pwd
[email protected]:~$

pwd stands for: Print current/Working Directory. I can’t go deep into the file structure on a Linux machine proper now however I will clarify that later. for now, I know that “I am at /home/user1”.

And what about time, date, yr? for that just sort “date”

[email protected]:~$ date
Tue Jul 11 23:18:09 UTC 2017
[email protected]:~$

This output is just about self defined so i can’t go any farther with that.

At any level you need to give up a terminal then you definitely just have to sort “exit”.

1.2.What is a Linux command?

A Linux command could be a single phrase following by some parameters some information or Directories or even some variable and inputs from consumer. We already went via some primary single phrase commands like whoami, pwd and date. However how can the O.S. understands what to do?

A lot of the commands are actually small binaries (small packages) that was installed in your pc through the O.S. installation course of. The binary whoami for instance is within the listing /usr/bin . Usually with a view to execute that binary it is advisable present the complete path. In that case /usr/bin/whoami . Attempt that:

[email protected]:~$ /usr/bin/whoami
[email protected]:~$

As you possibly can see the output is strictly the identical since in both instances the same binary executed.

But how the system is aware of the place to search for these binaries?

There are a couple of directories that include binaries and and the O.S. is looking in those to examine if a command offered within the terminal has a binary in these directories. If you want to see the listing of these directories sort the next command:

[email protected]:~$ echo $PATH
/usr/native/sbin:/usr/native/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/video games:/usr/local/games
[email protected]:~$

This is the complete listing of directories that the O.S. is in search of binaries for the present consumer.

Tip: The $PATH can be modified to include or exclude some paths.

Because the /usr/bin is in that listing the O.S. is executing binaries within that listing even without the /usr/bin so in that case only the command whoami is sufficient. This is perhaps a bit complicated right now however will probably be extra clear afterward.

1.3 The Most important Linux Directories.

Linux have a hierarchical listing structure like probably the most Working Methods. This technique is a like a tree and it has a root listing that includes all the things then there are some directories and information underneath that:

├── bin
├── boot
├── cdrom
├── dev
├── and so on
├── house
├── lib
├── lib64
├── lost+discovered
├── media
├── mnt
├── choose
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var
   ├── backups
   ├── cache
   ├── crash
   ├── lib
   ├── native
   ├── lock -> /run/lock
   ├── log
   ├── mail
   ├── metrics
   ├── choose
   ├── run -> /run
   ├── spool
   └── tmp

In that example i have only expanded the subdirectories in /var and only in 1 degree. There are  many more subdirectories however the record wouldn’t easily fit right here.

Let’s take a quick look on the primary directories in Ubuntu.

/bin that is the first in the record and incorporates binaries that system needs to boot but lots of those are also usable by users like the date command we used earlier than.

/boot that’s perhaps an important directory in a linux system. it incorporates the kernel (this is the guts of a linux O.S.) and essential info for booting the system.

/dev here is a record of units that the O.S. can access like arduous drives partitions cd roms serial ports and so forth.

/and so on one of many core directories of the system because it accommodates all of the configurations of the system, scripts which might be operating in the course of the boot usernames teams virtually every part you possibly can imagine that may be configured in a system.

/house this incorporates the home directories for every consumer and users can store their information and directories right here.

/lib that is the library directory that is utilized by packages

/lost+discovered In case of an abnormal shutdown or if something goes incorrect into your file system the O.S. will try to recuperate information  and place them into that directory. Usually if this listing is empty is an effective signal!

/media USB disks, USB sticks, CD-ROMS and other removable units are mounted inside that directory. (that isn’t true for all Linux O.S.)

/mnt Usually that listing is empty but that is good place if you want to manually add shared/network directory or manually mount a tool

/choose that can also be kinda new in Linux and it is used to carry “optional Software” software that customers set up or anything that isn’t part of the primary O.S. prior to now that directory was underneath /usr/native and some packages are nonetheless want that directory.

/proc that is an fascinating Directory since it maintain information that used primarily by the system to determine hardware elements but normally these information are human readable and you will get some fascinating info out of that.

/root that is the residence listing for consumer root. This can be a special consumer which have permissions to do something in a Linux machine

/sbin this one is like /bin and maintain some binaries that can be executed by root or any tremendous consumer.

/tmp A short lived directory that packages are storing momentary information while packages executed in your system.

/usr This folder incorporates a lot of the binaries utilized by users and typically by system. There are various fascinating subdirectories in this one.

/var That listing holds dynamically modified information like log information, databases and usually is probably the most lively directory within the system.

1.4 Navigate into Linux File system.

the primary command to jump from one directory to another is the “cd” and this one stands for “Change Directory”.  Let’s navigate to the basis. That is the primary directory that holds all others and it is represented by the “/” slash image.

[email protected]:~$ cd /
[email protected]:/$

As you possibly can see the “~” tilde image that represents the house directory of the consumer changed to “/”

Tip: at anytime if you want to examine the path to the current working directory you possibly can problem the “pwd” command.

Now that we’re at the root of our file system we will navigate to any directory that we’ve got permissions to read. We’ll speak about permissions in a later chapter. let’s go to “usr” listing and from there inside the “games” directory. This may be completed step-by-step like:

[email protected]:/$ cd usr
[email protected]:/usr$ cd video games
[email protected]:/usr/video games$

or with one command like:

[email protected]:/$ cd usr/games
[email protected]:/usr/games$

You could have already observed that the directories are separated by “/” and in addition the command prompt string modified from “[email protected]:/$” to “[email protected]:/usr/games$” in that method you’ll be able to all the time examine the current working listing that starts after the “:”

As a way to move again one listing then we will use the command “cd ..”:

[email protected]:/usr/video games$ cd ..
[email protected]:/usr$

The “..” two dots are standing for the mum or dad listing while the “.” one dot stands for the current directory there isn’t any level to vary to present listing but that’s necessary on some other occasions.

1.4.1 Absolute path vs Relative path.

The absolute path.

Each directory or file in our file system have its personal unique path. This handle starts from “/” and ends at the listing or the file that we need to reach. For instance if we need to play gnome-sudoku we have to know the path to that recreation.

Observe! Ubuntu and another debian based mostly Linux are coming with that recreation. This is probably not out there in other Linux distributions.

The absolute path for that recreation is /usr/video games/gnome-sudoku

As you’ll be able to see that path starts with “/” following by some subdirectories and ends on the filename. Some other O.S. used to have an extension to every file and with that the file is recognized. In Linux, extensions usually are not obligatory. So now if i need to play that recreation all i’ve to do is to offer the absolute path to that recreation and i can do this from any location. It doesn’t matter if i am in /var or in /residence/user1. Since i am providing absolutely the path the system will simply go there and execute the file. that is the which means of the absolute path.

let’s have some enjoyable:

[email protected]:/usr$ /usr/video games/gnome-sudoku
[email protected]:/usr$

At that point a new window will open and sudoku will run. When you close the window the command line will grow to be again obtainable.

Relative path.

There’s additionally one other solution to navigate via file system by providing the relative path. as an alternative of starting from “/” you can start from another location and that path might be relative to your present working listing. Right now you’re at “/usr” and if you want to start once more the identical recreation that’s in a subdirectory of usr then it is advisable provide the relative path from “/usr” to the executable. as we stated before the “.” one dot stands for the present directory. So if i’m in “/usr” and sort “.” then in essence I am saying /usr/ and from there i can proceed like “./games/gnome-sudoku” or if i used to be already contained in the video games directory (so my current working directory was /usr/video games/) then i might be capable of execute the same recreation by typing ./gnome-sudoku

It’d sound a bit difficult at that time but we’ll see many examples of that afterward and it’ll turn out to be far more clear. However for now just keep in mind that when i’m offering the complete path starting from root “/” to the file or listing i’m using the absolute path and when I am offering a path related to my current working directory I am using a Relative path. There isn’t any right and improper approach to do something we simply use whatever is more convenient.

1.5 Record the contents of a directory “ls”

Let’s record the contents within the root listing. For that you’ll want the ls command.

ls stands for “list”

[email protected]:/$ ls
bin    dev   initrd.img      lib64       mnt   root  srv  usr      vmlinuz.previous
boot   and so on   initrd.img.previous  misplaced+found  choose   run   sys  var
cdrom  house  lib             media       proc  sbin  tmp
[email protected]:/$

These 2 instructions are probably the most primary so as to navigate to a directory  and listing all the information in that listing. if we would like for instance to examine the contents of /usr then we will first go inside /usr and then listing the contents.

[email protected]:/$ cd usr
[email protected]:/usr$ ls
bin  games  embrace  lib  local  locale  sbin  share  src
[email protected]:/usr$

“ls” by default is listing the contents of the present working directory however it’s also possible to present the trail of the directory that you simply need to listing the contents and run the command from all over the place without going instantly into the precise listing. In the identical state of affairs the place I am in root directory “/” and i used to be to examine the contents of /usr as an alternative of shifting in i run instantly the “ls” command and offering absolutely the path of the listing.

[email protected]:/$ ls /usr/
bin  games  embrace  lib  local  locale  sbin  share  src
[email protected]:/$

In this directory you’ll be able to see the complete listing of information and directories that you’ve in your Linux however as a traditional consumer you shouldn’t have entry to all of them. Each consumer have his personal listing the place he/she have full management to learn write and execute. Now its time to return to owr residence listing and create a subdirectory and a file inside that listing. there are various ways to try this but the easiest is by typing “cd ~/” that is equal to “cd /home/user1” the place user1 is the identify of current consumer.

technique 1:

[email protected]:/$ cd ~/
[email protected]:~$

technique 2:

[email protected]:/$ cd /residence/user1/
[email protected]:~$

1.6 Creating and deleting information and directories

Now we’re in our House directory. With the next command we will create a listing named “working_directory”

[email protected]:~$ mkdir working_directory
[email protected]:~$

Tip: By default this command won’t return any output. in case that there’s a drawback throughout creating the listing an output can be generated and it is possible for you to to examine what went improper. A standard concern is if you end up making an attempt to create a sub-directory inside a listing that you simply don’t have write permission. We’ll speak about permissions in a next chapter.

Word you should not use “space” in information or directories names. the command “mkdir working directory” will truly create 2 directories one named “working” and one named “directory”

okay now that we now have a check directory we will go in and create a file with identify test_file. again here I am utilizing an underscore otherwise the system will generate 2 file one named check and one named file. the command to create an empty file is the “touch”. so lets do this.

[email protected]:~$ cd working_directory/
[email protected]:~/working_directory$ contact test_file
[email protected]:~/working_directory$

now lets record the contents of this directory

[email protected]:~/working_directory$ ls

Great so we have now our first file inside our first directory. Now lets transfer on and delete this file. The command that we need to use is the “rm” which stands for remove and it may be used for each information and directories. lets delete the file by issuing the “rm” adopted by the file identify and listing the contents of listing to ensure that the file is deleted.

[email protected]:~/working_directory$ rm test_file
[email protected]:~/working_directory$ ls
[email protected]:~/working_directory$

Observe Linux will never ask by default for a confirmation if you end up deleting a file and will not produce any output if the operation was profitable. It can all the time assume that you recognize what are you doing. You also have to bear in mind that the file is just not going right into a trash can or something comparable. So you need to say good-bye to your file for good.

Now lets attempt to remove the listing that we created earlier than. We might want to navigate to the father or mother directory and then situation the rm command once more adopted by the directory identify. But since this can be a directory we have to use the choice “-d”. The -d is saying to rm to remove an empty listing. so lets do this.

[email protected]:~/working_directory$ cd ..
[email protected]:~$ rm -d working_directory/
[email protected]:~$

now we have to point out 2 more parameters for the rm command is the -r that stands for Recursive and the -f that stands for Pressure.

for those who mix these 2 together then you’ll be able to take away a listing and its contents regardless of what number of sub directories and information are listed inside.

So the command will appear to be the following.

[email protected]:~$ rm -rf working_directory/

1.7. Customers and Groups

In a Linux system you’ll be able to create as many customers as you need. These users could be native or network users in case you are operating a NIS authentication. For now we’ll speak about native customers.

Every consumer in  a Linux system has its personal Directory where he/she has full permissions and as we already stated the brief path symbol for that’s the “~”

so to be able to navigate into this directory all you need to do is to concern the following command:

[email protected]:/$ cd ~

In there customers can retailer their personal information and in addition change the configuration information so they can customize their terminals. these information are usually not seen by default since they’re hidden. but you’ll be able to see them when you sort the “ls” command following by the -a parameter.

[email protected]:~$ ls -a
. .cache Downloads Music Videos
.. .config examples.desktop Footage .Xauthority
.bash_history Desktop .gconf .profile .xsession-errors
.bash_logout .dmrc .ICEauthority Public
.bashrc Paperwork .native Templates

The names of all hidden information and directories begins with a “.”. lets verify a couple of of probably the most fascinating information.


on this file the system shops all the instructions that you are typing in a terminal and this can be a nice supply to verify what you’ve gotten completed to date. this can be a plain textual content file and you may examine the contents of it through the use of the “cat” command.

[email protected]:~$ cat .bash_history
ls ~
cd ~
ls ~
ls -a ~
ls -a

One other approach to verify your historical past is by simply issuing the “history” command that may give the same results.


This can be a script that’s operating when a consumer is logging off from his/her account and by default it’s clearing the display to increase privateness. This information could be adjusted so you’ll be able to carry out some additional actions upon sign off. One in every of my favorites is to back up some essential directories to a share drive. We’ll speak about modifing those information in another chapter.


This is one is executed once the consumer is logging in and its a terrific place to define config information in your account. In Ubuntu for example it defines the essential account config file and the $PATH that we talked already in a earlier Chapter.

And last however not least is the .bashrc file. This is perhaps an important config file in your account and we’ll spend loads of time on that afterward.

The usergroups in a Linux system are logical mixtures of customers. Users could be a part of many teams. Principally this can be a great option to categorize users and supply them permissions on specific directories or information.

At the end we have to say a couple of phrases about “root” consumer. This consumer exists on all Linux machines and it’s a special consumer which have permissions to entry and modify every little thing within the system. It is best to avoid using this consumer for on a regular basis work but when the whole lot collapse then you already know you can rely on this consumer. Usually in a manufacturing setting only the Linux directors have access to this account.

1.8 Permissions on Information and Directories

To be proceed…

Stay tuned ?