SHELL INTERPRETER
UNIX SHELL INTERPRETERS
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
m
A
Unix shell
is a
command-line interpreter
or
shell
that provides a
traditional Unix-like command line user interface. Users direct the
operation of the
computer
by entering commands as text for a
command line interpreter
to execute, or by creating text scripts of one
or more such commands. Users typically interact with a Unix shell
using a
terminal emulator
, however, direct operation via serial
hardware connections, or networking session, are common for server
systems.
CONT…
The most generic sense of the term shell means any program that users
employ to type commands. A shell hides the details of the underlying operating system and manages the technical details of the operating system kernel interface, which is the lowest-level, or "inner-most" component of mo
In Unix-like operating systems, users typically have many choices of
command-line interpreters for interactive sessions. When a user logs in to the system interactively, a shell program is automatically executed for the duration of the session. The type of shell, which may be customized for each user, is typically stored in the user's profile, for example in the local
passwd file or in a distributed configuration system such as NIS or LDAP; however, the user may execute any other available shell interactively.
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
The Unix shell is both an interactive command language as well as a scripting programming language, and is used by the operating system as the facility to control (shell script) the execution of the system.[1] Shells
created for other operating systems often provide similar functionality.
On hosts with a windowing system, like OS X, some users may never
use the shell directly. On Unix systems, the shell has historically been the implementation language of system startup scripts, including the program that starts a windowing system, configures networking, and many other essential functions. However, some system vendors have replaced the traditional shell-based startup system (init) with different approaches, such as systemd.
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
m
UNIX SHELL INTERPRETERS
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
INTRODUCTION TO SHELL
PROGRAMMING
Shell programming is one of the most powerful
features on any UNIX system
If you cannot find an existing utility to
accomplish a task, you can build one using a shell
script
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
SHELL PROGRAM STRUCTURE
A shell program contains high-level
programming language features:
Variables for storing data
Decision-making control (e.g. if and case statements)
Looping abilities (e.g. for and while loops)
Function calls for modularity
A shell program can also contain:
UNIX commands
Pattern editing utilities (e.g. grep, sed, awk)
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
YOUR SHELL PROGRAMMING
LIBRARY
Naming of shell programs and their output
Give a meaningful name
Program name example: findfile.csh
Do not use: script1, script2
Do not use UNIX command names
Repository for shell programs
If you develop numerous shell programs, place them
in a directory (e.g. bin or shellprogs)
Update your path to include the directory name
where your shell programs are located
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
STEPS TO CREATE SHELL PROGRAMS
Specify shell to execute program
Script must begin with #! (pronounced “shebang”)
to identify shell to be executed
Examples:
#! /bin/sh
(defaults to bash)
#! /bin/bash
#! /bin/csh
#! /usr/bin/tcsh
Make the shell program executable
Use the “chmod” command to make the
program/script file executable
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
FORMATTING SHELL PROGRAMS
Formatting of shell programs
Indent areas (3 or 4 spaces) of programs to indicate
that commands are part of a group
To break up long lines, place a \ at the end of one
line and continue the command on the next line
Comments
Start comment lines with a pound sign (#)
Include comments to describe sections of your
program
Help you understand your program when you look at
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
STEPS OF PROGRAMMING
Guidelines:
use good names for
script
variables
use comments
lines start with #
use indentation to
reflect logic and
nesting
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
EXAMPLE: “HELLO” SCRIPT
#! /bin/csh
echo "Hello $USER"
echo "This machine is `uname -n`"
echo "The calendar for this month is:"
cal
echo "You are running these processes:"
ps
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te
EXAMPLE SCRIPT OUTPUT
% chmod u+x hello % ./hello
Hello ege!
This machine is turing
The calendar for this month is February 2008
S M Tu W Th F S 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
You are running these processes: PID TTY TIME CMD
C
S
C
I 3
30
- T
he
U
N
IX
S
ys
te