Simple Unix Commands every developer should know

If you are new to Linux or any Unix operating system here is a list of must know commands that can help you in every day task

cat

Shows the content of a file. Run cat /etc/hosts

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

is the output on my computer. /etc/hosts is the path of the file.

mkdir

Make/Create a directory. Run mkdir a mkdir a/b mkdir a/b/c

this will create the directory a  and in it will be directory b and then c in b directory.

pwd

print working directory. This commands shows the current directory you are in, output from my machine.

expanse@Ankurs-Mac-mini ~ % pwd 
/Users/expanse

I am in expanse directory which is in the Users directory.

cd

cd allows you to navigate from one directory to another. You can give an absolute path or
relative path. Relative path is the location of the directory from your current folder.
Let us try to navigate the directory created above aka a b and c

cd a - Enters directory a and this is relative path from current directory.

cd b - Enters directory b from current directory

cd /Users/expanse/a/b/c - Enter directory c using absolute path aka the complete path on the filesystem.

you can use

cd .. to go to parent directory from current directory

cd - to go back to previous directory before you entered this one.

cd without any argument goes to the home directory of the user.

free

free tells you how much of free memory is there on the system. e.g.

deploy@linux:~$ free
              total        used        free      shared  buff/cache   available
Mem:        8167616     3140156      795416        1156     4232044     4723404
Swap:             0           0           0

this show you how much of free Mem and swap space is there. To know the same in MB and GB do this

free -mh

deploy@linux:~$ free
total        used        free      shared  buff/cache   available
Mem:           7.8G        3.0G        776M        1.1M        4.0G        4.5G
Swap:            0B          0B          0B

df

df tell you how much disk space is free in every partition. e.g.

df -h

deploy@deploy:~$ df -h 
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           798M  960K  797M   1% /run
/dev/vda1        78G   61G   17G  79% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/loop0      100M  100M     0 100% /snap/core/11316
/dev/loop2      100M  100M     0 100% /snap/core/11187
/dev/loop1       43M   43M     0 100% /snap/certbot/1201
/dev/loop4       62M   62M     0 100% /snap/core20/1026
/dev/vda15      105M  8.8M   96M   9% /boot/efi
tmpfs           798M     0  798M   0% /run/user/1000
/dev/loop5       43M   43M     0 100% /snap/certbot/1280

head

head allows you to display the first few lines of a file. I have a file with all rss feeds of tennis websites.

deploy@linux:~$ head tennisnews.txt 
http://news.bbc.co.uk/rss/sportonline_world_edition/tennis/rss091.xml
http://sports.espn.go.com/espn/rss/tennis/news?null
http://www.tennis-x.com/tennisxnews.xml
http://www.atpworldtour.com/en/media/rss-feed/xml-feed
http://straightsets.blogs.nytimes.com/feed/
http://feeds.tennis.com/concrete-elbow-tignor
http://www.guardian.co.uk/sport/tennis/rss
http://feeds.feedburner.com/tennisx
http://bleacherreport.com/articles/feed?tag_id=12
http://rss.cnn.com/rss/edition_tennis.rss

how about if I want to display only the top 10 lines?.

deploy@linux:~$ head -n 5 tennisnews.txt 
http://news.bbc.co.uk/rss/sportonline_world_edition/tennis/rss091.xml
http://sports.espn.go.com/espn/rss/tennis/news?null
http://www.tennis-x.com/tennisxnews.xml
http://www.atpworldtour.com/en/media/rss-feed/xml-feed
http://straightsets.blogs.nytimes.com/feed/

watch

watch allows you to run a command again and again periodically. Say that your ram's is getting utilised completely and you want to monitor the change or growth every 3-4 seconds.

deploy@deploy:~$ watch -n 3 free -m
Every 3.0s: free -m                                                                                     total        used        free      shared  buff/cache   available
Mem:           7976        3068         722           1        4185        4610
Swap:             0           0           0

screen

say you want to run a command and let it run even after you have existed the terminal aka run the program in background without the terminal running. Use the command screen

Run screen and you will be greeted by a copyright message, [Press Space or Return to end.] and you will see a normal shell prompt. Here you can simply run a script and exit screen by entering the command ctrl + ad and to enter the screen again simply type screen -r -d.

| and grep

say you have a file with thousands of lines and want to find amongst that a word. We have seen that we can print the content of a file with cat. grep allows you to find the existence of a word in a line. | will allow you to take the output of one and make it the input of another. What the hell am I talking?. e.g.

deploy@deploy:~$ cat tennisnews.txt | grep swordsmaster
http://blog.xuite.net/swordsmaster/tennis/rss.xml

so | made the output of tennisnews.txt as the input of grep.

20