Shell Scripting

Top 50 Shell Scripting Interview Questions & Answers

1: What is a shell?

Shell is a interface between user and the kernel. Even though there can be  only one kernel ; a system can have many shell running simultaneously . Whenever  a user enters a command  through keyboard the shell communicates with the kernel  to execute it and then display the output to the user.

2: What are the different types of commonly used shells  on a typical linux system?

csh,ksh,bash,Bourne . The most commonly used and advanced shell used today is “Bash” .

3:What is the equivalent of a file shortcut that we have on window on a Linux system?

Shortcuts are created using “links” on Linux. There are two types of links that can be used namely “soft link” and “hard link”

4:What is the difference between soft and hard links?

Soft links are link to the file name and can reside on different filesytem as well; however hard links are link to the inode of the file and has to be on the same filesytem as that of the file. Deleting the orginal file makes the soft link inactive (broken link) but does not affect the hard link (Hard link will still access a copy of the file)

5: How will you pass and access arguments to a script in Linux?

Arguments can be passed as:

scriptName “Arg1” “Arg2”….”Argn” and can be accessed inside the script as $1 , $2 .. $n

6: What is the significance of $#?

$# shows the count of the arguments passed to the script.

7: What is the difference between $* and $@?


$@ treats each quoted arguments as separate arguments but $* will consider the entire set of positional parameters as a single string.

8: Use sed command to replace the content of the file (emulate tac command)

Eg:

 

Then O/p should be

EFGH
ABCD

Here G command appends to the pattern space,

h command copies pattern buffer to hold buffer

and d command deletes the current pattern  space.

9: Given a file,  replace all occurrence of word “ABC” with “DEF” from 5th line till end in only those lines that contains word “MNO”

 

10: Given a file , write a command sequence to find the count of each word.

 

”(backslash)011” is octal equivalent of “tab character” and

“(backslash)012” is octal equivalent of newline character.

11: How will you find the 99th line of a file using only tail and head command?

tail +99 file1|head -1

12: Print the 10th line without using tail and head command.

 

13:In my bash shell I want my prompt to be of format  ‘$”Present working directory”:”hostname”>  and load a file containing a list of user defined functions as soon as I login , how will you automate this?

In bash shell we can create “.profile”  file which automatically gets invoked as soon as I login and write the following syntax into it.

 

Here File1 is the file containing the user defined functions and “.” invokes this file in current shell.

14: Explain about “s” permission bit in a file?

“s” bit is called “set user id” (SUID) bit.

“s” bit on a file causes the process to have the privileges of the owner of the file during the instance of the program.

Eg: Executing “passwd” command to change current password causes the user to writes its new password to shadow file even though it has “root” as its owner.

15: I want to create a directory such that anyone in the group can create a file and access any person’s file in it but none should be able to delete a file other than the one created by himself.

We can create the directory giving read and execute access to everyone in the group and setting its sticky bit “t” on as follows:

 

16: How can you find out how long the system has been running?

Command “uptime”

17: How can any user find out all information about a specific user like his default shell, real life name, default directory,when and how long he has been using the sytem?

finger  “loginName”                  …where loginName is the  login name of  the

user whose  information is expected.

18: What is the difference between $$ and $!?

$$ gives the process id of the currently executing process whereas $! shows the process id of the process that recently went into background.

19: What are zombie processes?

These are the processes which have died but whose exit status is still not picked by the parent process. These processes even if not functional still have its process id entry in the process table.

20: How will you copy file from one machine to other?

We can use utilities like “ftp” ,”scp” or “rsync” to copy file from one machine to other.

Eg: Using ftp:

ftp hostname

>put file1

>bye

Above copies file file1 from local system to destination system whose hostname is specified.

21: I want to monitor a continuously updating log file, what command can be used to most efficiently achieve this?

We can use tail –f filename     . This will cause only the default last 10 lines to be displayed on std o/p which continuously shows  the updating part of the file.

22: I want to connect to a remote server and execute some commands, how can I achieve this?

We can use telnet to do this:

telnet hostname –l user

>Enter password

>Write the command to execute

>quit

23: I have 2 files and I want to print the records which are common to both.

We can use “comm” command as follows:

comm -12 file1 file2               … 12 will suppress the content which are

unique to 1st and 2nd  file respectively.

24: Write a script to print the first 10 elemenst of Fibonacci series.

 

25: How will you connect to a database server from linux?

We can use isql utility that comes with open client driver  as follows:

isql –S serverName –U username –P password

26: What are the 3 standard streams in Linux?

0 – Standard Input
1 – Standard Output
2 – Standard Error


27: I want to read all input to the command from file1 direct all output to file2 and error to file 3, how can I achieve this?

command <file1 1>file2 2>file3

28: What will happen to my current process when I execute a command using exec?

“exec” overlays the newly forked process on the current  process ; so when I execute the command using exec, the command gets executed on the current shell without creating any new processes.

Eg: Executing “exec  ls”  on command prompt will execute ls and once ls exits, the process will shut down

29: How will you emulate wc –l using awk?

awk ‘END {print NR} fileName’

30: Given a file find the count of lines containing word “ABC”.

grep –c  “ABC” file1

31: What is the difference between grep and egrep?

egrep is Extended grep that supports added grep features like “+” (1 or more occurrence of previous character),”?”(0 or 1 occurrence of previous character) and “|” (alternate matching)

32: How will you print the login names of all users on a system?

/etc/shadow file has all the users listed.

awk –F ‘:’ ‘{print $1} /etc/shadow’|uniq -u

33: How to set an array in Linux?

Syntax in ksh:

Set –A arrayname= (element1 element2 ….. element)

In bash

A=(element1 element2 element3 …. elementn)

34: Write down the syntax of “for “ loop

Syntax:

for  iterator in (elements)

do

execute commands

done

35:How will you find the total disk space used by a specific user?

du  -s /home/user1             ….where user1 is the user for whom the total disk

space needs to be found.

36: Write the syntax for “if” conditionals in linux?

Syntax

If  condition is successful

then

execute commands

else

execute commands

fi

37:What is the significance of $? ?

$? gives the exit status of the last command that was executed.

38: How do we delete all blank lines in a file?

 

where (backslash)011 is octal equivalent of space and

(backslash)040 is octal equivalent of tab

39: How will I insert a line “ABCDEF” at every 100th line of a file?

sed ‘100i\ABCDEF’ file1

40: Write a command sequence to find all the files modified in less than 2 days and print the record count of each.

find . –mtime -2 –exec wc –l {} \;

41: How can I set the default rwx permission to all users on  every file which is created in the current shell?

We can use:

 

This will set default rwx permission for every file which is created to every user.

42: How can we find the process name from its process id?

We can use “ps –p ProcessId”

43: What are the four fundamental components of every file system on linux?

bootblock, super block, inode block and  datablock

44: What is a boot block?

This block contains a small program called “Master Boot record”(MBR) which loads the kernel  during system boot up.

45: What is a super block?

Super block contains all the information about the file system like size of file system, block size used by it,number of free data blocks and list of free inodes and data blocks.

46: What is an inode block?

This block contains the inode for every file of the file system along with all the file attributes except its name.

47: How can I send a mail with a compressed file as an attachment?

  zip file1.zip file1|mailx –s “subject” Recepients email id

 Email content

 EOF

48: How do we create command aliases in shell?

alias Aliasname=”Command whose alias is to be created”

49: What are “c” and “b” permission fields of a file?

“c “ and “b” permission fields are generally associated with a device file. It specifies whether a file is a character special file or a block special file.

50: What is the use of a shebang line?

Shebang line at top of each script determines the location of the engine which is to be used in order to execute the script.

Shell Scripting Quiz

Start
Congratulations - you have completed Shell Scripting Quiz.
You scored %%SCORE%% out of %%TOTAL%%.
Your performance has been rated as %%RATING%%

Shell Scripting Quiz Results

  • mTouch Quiz Populated Fields

    mTouch Quiz will automatically populate the fields below. Feel Free to add additional fields for the Quiz Taker to complete using the "Add Fields" options to the right.
  • The name of the quiz
  • The number of correct answers. This has the same value as the %%SCORE%% Variable on the Final Screen.
  • The total number of questions. This has the same value as the %%TOTAL%% Variable on the Final Screen.
  • Correct answer percentage. This has the same value as the %%PERCENTAGE%% Variable on the Final Screen.
  • Number of wrong answers. This has the same value as the %%WRONG_ANSWERS%% Variable on the Final Screen.
  • Time allowed (Requires timer add on). This has the same value as the %%TIME_ALLOWED%% Variable on the Final Screen.
  • Time used (Requires timer add on). This has the same value as the %%TIME_USED%% Variable on the Final Screen.
Your answers are highlighted below.
Return
Shaded items are complete.
12345
678910
1112131415
End
Return

FacebookTwitter
17 replies
  1. Senthil Prabu S says:

    Thanks for your support!!

    Reply
  2. E=Mc^2 says:

    Good job.

    Also Can you please correct your answer to Question 26.
    0 – Standard Input
    1 – Standard Output
    2 – Standard Error

    Reply
    • Guru99 says:

      Updated. Thanks for bringing this to notice!

      Reply
      • E=Mc^2 says:

        Thanks.
        Guru99 , you are doing a great job of knowledge sharing. Thanks again.

        Reply
  3. Shivakumar Madagiri says:

    For question no : 20 . sftp can also be used to copy files from one machine to another machine . To use sftp first we need to ssh connectivity from one host to another host

    sftp username@hostname
    put file1
    bye

    Reply
  4. Shivakumar Madagiri says:

    for question no 25 : We can also use sqlplus to connect to DB from linux server

    sqlplus -s dbloginname/password@remotedatabasename

    Reply
  5. The Urban Socrates says:

    Thanks for this. However on Question 27:
    I want to direct all output to file2. You have command file2 2>file3. It should be command file2 2>file3.

    Reply
    • Guru99 says:

      Error Fixed! Thanks for bringing this to notice

      Reply
  6. Mohit Garg says:

    Question number 5 of the quiz : Print the 10th line without using tail and head command has wrong answer.

    sed n ‘10p’ file1

    Reply
    • Rahul Singh says:

      the correct answer is sed -n ’10p’ file1. There is a hyphen missing before n.

      Reply
  7. atul gupta says:

    I think Question no 24 fibbonacci series. The program is wrong . it is not giving the required output. I have made the required changes to get correct output.
    #!/bin/sh

    a=1

    b=1

    echo $a

    echo $b

    for i in {1..100}

    do

    c=$b

    b=$(($a+$b))

    a=$c

    echo $b

    done

    Reply
  8. Nishant Jalasutram says:

    #!/bin/sh

    a=1

    b=1

    echo $a

    echo $b

    for i in 1 2 3 4 5 6 7 8

    do

    #{

    c=expr $b + $a

    b=$a

    a=$c

    echo $c

    #}

    done

    Reply
  9. caleb kunene says:

    Question 11: How will you find the 99th line of a file using only tail and head command?
    tail starts at the bottom of the file.
    head starts at the top of the file.
    + means search downwards
    – means search upwards

    Your Answer :tail +99 file1|head -1 =your answer starts at the End of the file attempting to go further down 99 lines.
    What it should be: head +99 file1|tail -1 =starts at the top counts till 99 and of that output it starts at bottom and takes the last line which is the 99th line

    if you apply my answer to what you did to for Question 12 IE: sed -n ’99p’ file1 you will get the same answer
    12: Print the 10th line without using tail and head command.
    sed –n ‘10p’ file1

    Reply
    • vijay gupta says:

      It depends on flavor of Linux been used .Correct format is

      head -99 file1|tail -1

      No ‘+’ accepted for head command by most of the Linux distributions.

      Reply
  10. Anupam Kumar says:

    39: How will I insert a line “ABCDEF” at every 100th line of a file? ans- sed ‘100iABCDEF’ file1
    It will insert only at 100th position. to reapet it should be sed ‘1~100 i repeatLine’ file1
    I have tested this in cygwin.

    Reply
  11. tapas parida says:

    For Qn.11 there are 2 ways to represent in solaris os-
    head -99 |tail -1–>Fetch records from 1st line to 99 and picks the bottom.
    or
    tail +99 |head -1–>>Fetch records from 99 to end of file and picks the top.

    Reply
  12. Sow says:

    String = ABCD
    I want to print only BC using shell scripting
    How can I do this?

    Reply

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *