- · Kernel
- · Shell
- · Terminal
What is Kernel?
The kernel is a computer program
that is the core of a computer’s operating system, with complete control over
everything in the system. It manages following resources of the Linux system –
- · File management
- · Process management
- · I/O management
- · Memory management
- · Device management etc.
Linus Torvalds has
developed Linux OS and he is only responsible for development of linux kernel.
Complete
Linux system = Kernel + GNU system utilities and libraries + other management
scripts + installation scripts.
What is Shell?
A shell is special user program
which provide an interface to user to use operating system services. Shell
accept human readable commands from user and convert them into something which
kernel can understand. It is a command language interpreter that execute
commands read from input devices such as keyboards or from files. The shell
gets started when the user logs in or start the terminal.
Shell is broadly classified into two categories –
- · Command Line Shell
- · Graphical shell
Command Line Shell
Shell can be accessed by user using
a command line interface. A special program called Terminal in linux or Command Prompt in Windows OS is provided to type
in the human readable commands such as “cat”, “ls” etc. and then it is being
execute.
Working with command line shell is bit difficult for the beginners because it’s
hard to memorize so many commands. It is very powerful, it allows user to store
commands in a file and execute them together. This way any repetitive task can
be easily automated. These files are usually called batch files (.bat files) in Windows and Shell Scripts (.sh files) in Linux systems.
Graphical Shells
Graphical shells provide means for
manipulating programs based on graphical user interface (GUI), by allowing for
operations such as opening, closing, moving and resizing windows, as well as
switching focus between windows. Window OS or Linux OS can be considered as
good example which provide GUI to user for interacting with program. User do
not need to type in command for every actions.
There are several shells are available for Linux systems like –
BASH (Bourne Again Shell) – It is most widely used shell in Linux systems. It is used as default login shell in Linux systems and in macOS. It can also be installed on Windows OS.
CSH (C Shell) – The C shell’s syntax and usage are very similar to the C programming language.
KSH (Korn Shell) – The Korn Shell also was the base for the POSIX Shell standard specifications etc.
Each shell does the same job but understand different commands and provide different built in functions.
Shell Scripting
Usually shells are interactive that
mean, they accept command as input from users and execute them. However some
time we want to execute a bunch of commands routinely, so we have type in all
commands each time in terminal.
As shell can also take commands as input from file we can write these commands
in a file and can execute them in shell to avoid this repetitive work. These
files are called Shell Scripts or Shell Programs. Shell scripts are similar to the batch file in
MS-DOS. Each shell script is saved with .sh file
extension eg. myscript.sh
A shell script have syntax just like
any other programming language. If you have any prior experience with any
programming language like Python, C/C++ etc. it would be very easy to get
started with it.
A shell script comprises following elements –
- · Shell Keywords – if, else, break etc.
- · Shell commands – cd, ls, echo, pwd, touch etc.
- · Functions
- · Control flow – if, then, else, case and shell loops etc.
Why do we need shell scripts?
There are many reasons to write
shell scripts –
- · To avoid repetitive work and automation
- · System admins use shell scripting for routine backups
- · System monitoring
- · Adding new functionality to the shell etc.
Advantages of shell scripts
- · The command and syntax are exactly the same as those directly entered in command line, so programmer do not need to switch to entirely different syntax
- · Writing shell scripts are much quicker
- · Quick start
- · Interactive debugging etc.
Disadvantages of shell scripts
- · Prone to costly errors, a single mistake can change the command which might be harmful
- · Slow execution speed
- · Design flaws within the language syntax or implementation
- · Not well suited for large and complex task
- · Provide minimal data structure unlike other scripting languages. etc