Useful Commands for Linux New users


1. Command: ls

The command ls stands for (List Directory Contents), List the contents of the folder, be it file or folder, from which it runs.

[email protected]:~# ls

Android-Games                     Music

Pictures                          Public


Documents                         Test-Sync

Downloads                         Templates

The command ìls -lî list the content of folder, in long listing fashion.

[email protected]:~# ls -l

total 40588

drwxrwxr-x 2 test test     4096 May  8 01:06 Android Games

drwxr-xr-x 2 test test     4096 May 15 10:50 Desktop

drwxr-xr-x 2 test test     4096 May 16 16:45 Documents

drwxr-xr-x 6 test test     4096 May 16 14:34 Downloads

drwxr-xr-x 2 test test     4096 Apr 30 20:50 Music

drwxr-xr-x 2 test test     4096 May  9 17:54 Pictures

drwxrwxr-x 5 test test     4096 May  3 18:44

drwxr-xr-x 2 test test     4096 Apr 30 20:50 Templates

Command ìls -aì, list the content of folder, including hidden files starting with ë.í.

[email protected]:~# ls -a

.   .gnupg   .dbus   .goutputstream-PI5VVW  .mission-control

.adobe                  deja-dup                .grsync                 .mozilla                  .themes

.gstreamer-0.10         .mtpaint                .thumbnails             .gtk-bookmarks           .thunderbird

.HotShots               .mysql_history          .htaccess  .apport-ignore.xml       .ICEauthority          

.profile                .bash_history           .icons                  .bash_logout                    .fbmessenger

.jedit                  .pulse                  .bashrc                 .liferea_1.8              .pulse-cookie           

.Xauthority  .gconf                  .local                  .Xauthority.HGHVWW  .cache

.gftp                   .macromedia             .remmina                .cinnamon                       .gimp-2.8

.ssh                    .xsession-errors  .compiz                 .gnome                          teamviewer_linux.deb         

.xsession-errors.old .config                 .gnome2                 .zoncolor

Note: In Linux file name starting with ë.ë is hidden. In Linux every file/folder/device/command is a file. The output of ls -l is:

d (stands for directory).

rwxr-xr-x is the file permission of the file/folder for owner, group and world.

The 1st ravisaive in the above example means that file is owned by user ravisaive.

The 2nd ravisaive in the above example means file belongs to user group ravisaive.

4096 means file size is 4096 Bytes.

May 8 01:06 is the date and time of last modification.

And at the end is the name of the File/Folder.

2. Command: lsblk

The ìlsblkî stands for (List Block Devices), print block devices by their assigned name (but notRAM) on the standard output in a tree-like fashion.

[email protected]:~# lsblk


sda      8:0    0 232.9G  0 disk

+-sda1   8:1    0  46.6G  0 part /

+-sda2   8:2    0     1K  0 part

+-sda5   8:5    0   190M  0 part /boot

+-sda6   8:6    0   3.7G  0 part [SWAP]

+-sda7   8:7    0  93.1G  0 part /data

+-sda8   8:8    0  89.2G  0 part /personal

sr0     11:0    1  1024M  0 rom

The ìlsblk -lî command list block devices in ëlistë structure (not tree like fashion).

[email protected]:~# lsblk -l


sda    8:0    0 232.9G  0 disk

sda1   8:1    0  46.6G  0 part /

sda2   8:2    0     1K  0 part

sda5   8:5    0   190M  0 part /boot

sda6   8:6    0   3.7G  0 part [SWAP]

sda7   8:7    0  93.1G  0 part /data

sda8   8:8    0  89.2G  0 part /personal

sr0   11:0    1  1024M  0 rom

Note: lsblk is very useful and easiest way to know the name of New Usb Device you just plugged in, especially when you have to deal with disk/blocks in terminal.

3. Command: md5sum

The md5 sum stands for (Compute and Check MD5 Message Digest), md5 checksum (commonly called hash) is used to match or verify integrity of files that may have changed as a result of a faulty file transfer, a disk error or non-malicious interference.

[email protected]:~# md5sum teamviewer_linux.deb

47790ed345a7b7970fc1f2ac50c97002  teamviewer_linux.deb

Note: The user can match the generated md5sum with the one provided officially. Md5sum is considered less secure than sha1sum, which we will discuss later.

4. Command: dd

Command ìddî stands for (Convert and Copy a file), Can be used to convert and copy a file and most of the times is used to copy a iso file (or any other file) to a usb device (or any other location), thus can be used to make a ëBootlableë Usb Stick.

[email protected]:~# dd if=/home/user/Downloads/debian.iso of=/dev/sdb1 bs=512M; sync

Note: In the above example the usb device is supposed to be sdb1 (You should Verify it using command lsblk, otherwise you will overwrite your disk and OS), use name of disk very Cautiously!!!.

dd command takes some time ranging from a few seconds to several minutes in execution, depending on the size and type of file and read and write speed of Usb stick.

5. Command: uname

The ìunameî command stands for (Unix Name), print detailed information about the machine name, Operating System and Kernel.

[email protected]:~# uname -a

Linux test 3.8.0-19-generic #30-Ubuntu SMP Wed May 1 16:36:13 UTC 2013 i686 i686 i686 GNU/Linux

Note: uname shows type of kernel. uname -a output detailed information. Elaborating the above output of uname -a.

ìLinuxì: The machineís kernel name.

ìtestì: The machineís node name.

ì3.8.0-19-genericì: The kernel release.

ì#30-Ubuntu SMPì: The kernel version.

ìi686ì: The architecture of the processor.

ìGNU/Linuxì: The operating system name.

6. Command: history

The ìhistoryî command stands for History (Event) Record, it prints the history of long list of executed commands in terminal.

[email protected]:~# history

 1  sudo add-apt-repository ppa:tualatrix/ppa

 2  sudo apt-get update

 3  sudo apt-get install ubuntu-tweak

 4  sudo add-apt-repository ppa:diesch/testing

 5  sudo apt-get update

 6  sudo apt-get install indicator-privacy

 7  sudo add-apt-repository ppa:atareao/atareao

 8  sudo apt-get update

 9  sudo apt-get install my-weather-indicator

 10 pwd

 11 cd && sudo cp -r unity/6 /usr/share/unity/

 12 cd /usr/share/unity/icons/

 13 cd /usr/share/unity

Note: Pressing ìCtrl + Rî and then search for already executed commands which lets your command to be completed with auto completion feature.

(reverse-i-search)`if’: ifconfig

7. Command: sudo

The ìsudoî (super user do) command allows a permitted user to execute a command as the superuser or another user, as specified by the security policy in the sudoers list.

[email protected]:~# sudo add-apt-repository ppa:tualatrix/ppa

Note: sudo allows user to borrow superuser privileged, while a similar command ësuë allows user to actually log in as superuser. Sudo is safer than su.

It is not advised to use sudo or su for day-to-day normal use, as it can result in serious error if accidentally you did something wrong, thatís why a very popular saying in Linux community is:

ìTo err is human, but to really foul up everything, you need root password.î

8. Command: mkdir

The ìmkdirî (Make directory) command create a new directory with name path. However is the directory already exists, it will return an error message ìcannot create folder, folder already existsî.

[email protected]:~# mkdir test

Note: Directory can only be created inside the folder, in which the user has write permission. mkdir: cannot create directory `testë: File exists

(Donít confuse with file in the above output, you might remember what i said at the beginning ñ In Linux every file, folder, drive, command, scripts are treated as file).

9. Command: touch

The ìtouchî command stands for (Update the access and modification times of each FILE to the current time). touch command creates the file, only if it doesnít exist. If the file already exists it will update the timestamp and not the contents of the file.

[email protected]:~# touch testfile

Note: touch can be used to create file under directory, on which the user has write permission, only if the file donít exist there.

10. Command: chmod

The Linux ìchmodî command stands for (change file mode bits). chmod changes the file mode (permission) of each given file, folder, script, etc.. according to mode asked for.

There exist 3 types of permission on a file (folder or anything but to keep things simple we will be using file).

Read (r)=4



So if you want to give only read permission on a file it will be assigned a value of ë4ë, for write permission only, a value of ë2ë and for execute permission only, a value of ë1ë is to be given. For read and write permission 4+2 = ë6ë is to be given, ans so on.

Now permission need to be set for 3 kinds of user and usergroup. The first is owner, then usergroup and finally world.


Here the rootís permission is rwx (read, write and execute).

usergroup to which it belongs, is r-x (read and execute only, no write permission) and

for world is ñx (only execute).

To change its permission and provide read, write and execute permission to owner, group and world.

[email protected]:~# chmod 777

only read and write permission to all three.

[email protected]:~# chmod 666

read, write and execute to owner and only execute to group and world.

[email protected]:~# chmod 711

Note: one of the most important command useful for sysadmin and user both. On a multi-user environment or on a server, this command comes to rescue, setting wrong permission will either makes a file inaccessible or provide unauthorized access to someone.

11. Command: chown

The Linux ìchownî command stands for (change file owner and group). Every file belongs to a group of user and a owner. It is used Do ëls -lë into your directory and you will see something like this.

[email protected]:~# ls -l

drwxr-xr-x 3 server root 4096 May 10 11:14 Binary

drwxr-xr-x 2 server server 4096 May 13 09:42 Desktop

Here the directory Binary is owned by user ìserverî and it belongs to usergroup ìrootî where as directory ìDesktopî is owned by user ìserverî and belongs to user group ìserverì.

This ìchownî command is used to change the file ownership and thus is useful in managing and providing file to authorised user and usergroup only.

[email protected]:~# chown server:server Binary

drwxr-xr-x 3 server server 4096 May 10 11:14 Binary

drwxr-xr-x 2 server server 4096 May 13 09:42 Desktop

Note: ìchownî changes the user and group ownership of each given FILE to NEW-OWNER or to the user and group of an existing reference file.

12. Command: apt

The Debian based ìaptî command stands for (Advanced Package Tool). Apt is an advanced package manager for Debian based system (Ubuntu, Kubuntu, etc.), that automatically and intelligently search, install, update and resolves dependency of packages on Gnu/Linux system from command line.

[email protected]:~# apt-get install mplayer

Reading package lists… Done

Building dependency tree      

Reading state information… Done

The following package was automatically installed and is no longer required:


Use ‘apt-get autoremove’ to remove it.

The following extra packages will be installed:

  esound-common libaudiofile1 libesd0 libopenal-data libopenal1 libsvga1 libvdpau1 libxvidcore4

Suggested packages:

  pulseaudio-esound-compat libroar-compat2 nvidia-vdpau-driver vdpau-driver mplayer-doc netselect fping

The following NEW packages will be installed:

  esound-common libaudiofile1 libesd0 libopenal-data libopenal1 libsvga1 libvdpau1 libxvidcore4 mplayer

0 upgraded, 9 newly installed, 0 to remove and 8 not upgraded.

Need to get 3,567 kB of archives.

After this operation, 7,772 kB of additional disk space will be used.

Do you want to continue [Y/n]? y

[email protected]:~# apt-get update

Hit raring Release.gpg                                          

Hit raring Release.gpg                                          

Hit raring Release.gpg                     

Hit raring Release.gpg                     

Get:1 raring-security Release.gpg [933 B]

Hit raring Release.gpg                                                  

Hit raring Release.gpg                     

Get:2 raring-security Release [40.8 kB]   

Ign raring Release.gpg                                                 

Get:3 raring-updates Release.gpg [933 B]                           

Hit raring Release.gpg                                                                

Hit raring-backports Release.gpg

Note: The above commands results into system-wide changes and hence requires root password (Check ë#ë and not ë$í as prompt). Apt is considered more advanced and intelligent as compared toyum command.

As the name suggest, apt-cache search for package containing sub package mpalyer. apt-getinstall, update all the packages, that are already installed, to the newest one.

13. Command: tar

The ìtarî command is a Tape Archive is useful in creation of archive, in a number of file format and their extraction.

[email protected]:~# tar -zxvf abc.tar.gz (Remember ‘z’ for .tar.gz)

[email protected]:~# tar -jxvf abc.tar.bz2 (Remember ‘j’ for .tar.bz2)

[email protected]:~# tar -cvf archieve.tar.gz(.bz2) /path/to/folder/abc

Note: A ëtar.gzë means gzipped. ëtar.bz2ë is compressed with bzip which uses a better but slower compression method.

14. Command: cal

The ìcalî (Calendar), it is used to displays calendar of the present month or any other month of any year that is advancing or passed.

[email protected]:~# cal

May 2013       

Su Mo Tu We Th Fr Sa 

          1  2  3  4 

 5  6  7  8  9 10 11 

12 13 14 15 16 17 18 

19 20 21 22 23 24 25 

26 27 28 29 30 31

Show calendar of year 1835 for month February, that already has passed.

[email protected]:~# cal 02 1835

   February 1835     

Su Mo Tu We Th Fr Sa 

 1  2  3  4  5  6  7 

 8  9 10 11 12 13 14 

15 16 17 18 19 20 21 

22 23 24 25 26 27 28

Shows calendar of year 2145 for the month of July, that will advancing

[email protected]:~# cal 07 2145

     July 2145       

Su Mo Tu We Th Fr Sa 

             1  2  3 

 4  5  6  7  8  9 10 

11 12 13 14 15 16 17 

18 19 20 21 22 23 24 

25 26 27 28 29 30 31

Note: You need not to turn the calendar of 50 years back, neither you need to make complex mathematical calculation to know what day you were worn or your coming birthday will fall on which day.

15. Command: date

The ìdateî (Date) command print the current date and time on the standard output, and can further be set.

[email protected]:~# date

Fri May 17 14:13:29 IST 2013

[email protected]:~# date –set=’14 may 2013 13:57′

Mon May 13 13:57:00 IST 2013

Note: This Command will be very use-full in scripting, time and date based scripting, to be more perfect. Moreover changing date and time using terminal will make you feel GEEK!!!. (Obviously you need to be root to perform this operation, as it is a system wide change).

16. Command: cat

The ìcatî stands for (Concatenation). Concatenate (join) two or more plain file and/or print contents of a file on standard output.

[email protected]:~# cat a.txt b.txt c.txt d.txt abcd.txt

[email protected]:~# cat abcd.txt


contents of file abcd

Note: ì>>î and ì>î are called append symbol. They are used to append the output to a file and not on standard output. ì>î symbol will delete a file already existed and create a new file hence for security reason it is advised to use ì>>î that will write the output without overwriting or deleting the file.

Before Proceeding further, I must let you know about wildcards (you would be aware of wildcard entry, in most of the Television shows) Wildcards are a shell feature that makes the command line much more powerful than any GUI file managers. You see, if you want to select a big group of files in a graphical file manager, you usually have to select them with your mouse. This may seem simple, but in some cases it can be very frustrating.

For example, suppose you have a directory with a huge amount of all kinds of files and subdirectories, and you decide to move all the HTML files, that have the word ìLinuxî somewhere in the middle of their names, from that big directory into another directory. Whatís a simple way to do this? If the directory contains a huge amount of differently named HTML files, your task is everything but simple!

In the Linux CLI that task is just as simple to perform as moving only one HTML file, and itís so easy because of the shell wildcards. These are special characters that allow you to select file names that match certain patterns of characters. This helps you to select even a big group of files with typing just a few characters, and in most cases itís easier than selecting the files with a mouse.

Hereís a list of the most commonly used wildcards :

Wildcard   Matches

   *   zero or more characters

   ?   exactly one character

[abcde]   exactly one character listed

 [a-e]   exactly one character in the given range

[!abcde]  any character that is not listed

 [!a-e]   any character that is not in the given range

{debian,linux}  exactly one entire word in the options given

! is called not symbol, and the reverse of string attached with ë!í is true.

17. Command: cp

The ìcopyî stands for (Copy), it copies a file from one location to another location.

[email protected]:~# cp /home/user/Downloads abc.tar.gz /home/user/Desktop (Return 0 when sucess)

Note: cp is one of the most commonly used command in shell scripting and it can be used with wildcard characters (Describe in the above block), for customised and desired file copying.

18. Command: mv

The ìmvî command moves a file from one location to another location.

[email protected]:~# mv /home/user/Downloads abc.tar.gz /home/user/Desktop (Return 0 when sucess)

Note: mv command can be used with wildcard characters. mv should be used with caution, as moving of system/unauthorised file may lead to security as well as breakdown of system.

19. Command: pwd

The command ìpwdî (print working directory), prints the current working directory with full path name from terminal.

[email protected]:~# pwd


Note: This command wonít be much frequently used in scripting but it is an absolute life saver for newbie who gets lost in terminal in their early connection with nux. (Linux is most commonly referred as nux or nix).

20. Command: cd

Finally, the frequently used ìcdî command stands for (change directory), it change the working directory to execute, copy, move write, read, etc. from terminal itself.

[email protected]:~# cd /home/user/Desktop

[email protected]:~$ pwd