Chapter 5 – Linux Shells - WordPress.com

cornawakeSoftware and s/w Development

Nov 4, 2013 (3 years and 9 months ago)

119 views

LINUX

SHELLS

TOPIC 5.0

SHELL SCRIPT


Shell is the
interface between end user and
the Linux system
, similar to the commands
in Windows


Typical operations performed by shell
scripts include


file manipulation,


program execution,


text printing.

Use text editor to generate the “first” file


#!/bin/
sh

# first

# this file looks for the files containing POSIX

# and print it

for file in *

do


if
grep


q POSIX $file


then


echo $file


fi

done

exit 0


% /bin/
sh

first


%
chmod

+x first


%./first

EXAMPLE OF A SHELL SCRIPT

IMPORTANCE OF A SHELL SCRIPT


easy
program or file selection
,


quick start, and interactive
debugging.


A shell script can be used to
provide a sequencing and
decision
-
making linkage

around existing programs


Non
-
expert users can use scripting
to tailor the behaviour
of programs.


VARIOUS OF LINUX SHELLS


Bourne shell (
sh

commands)


C shell (
csh

commands)


Bourne
-
Again shell (bash commands)


Korn

shells (
ksh

commands
)


Almquist

shells (ash
commands
)



BOURNE SHELL (
sh

commands)


The
Bourne shell
, or
sh
, was the
default Unix shell
of Unix
Version 7,


It replaced the Thompson shell, but the executable file had the
same name,
sh
.


It was developed by
Stephen Bourne
, and released in 1977 in
the Version 7 Unix.


It remains a popular default shell for Unix accounts.


The binary program of the Bourne shell or a compatible
program is located at
/bin/
sh

on most Unix systems


Its command interpreter
contained all the features that are
commonly considered to produce structured programs
.


Although it is used as an interactive command interpreter, it
was always intended as a scripting language.


C SHELL (
csh

commands)


The
C shell

is a Unix shell that was created by Bill Joy in the
late 1970s.


It has been distributed widely in 1978.


The C shell is a command processor that's typically run in a
text window, allowing the user to type commands which
cause actions.


The C shell can also read commands from a file, called a
script.


C shell has an interactive features and overall style.


Its new features made it easier and faster to use.


And the overall style of the language looked more like C and
was seen as more readable.



BOURNE
-
AGAIN SHELL (bash commands)


Bash is the shell, or command language interpreter, that will
appear in the GNU operating system.


Bash is an
sh
-
compatible shell that incorporates useful
features from the
Korn

shell (
ksh
) and C shell (
csh
).


It offers functional improvements over
sh

for both
programming and interactive use.


In addition, most
sh

scripts can be run by Bash without
modification.


The manual is available online at
www.gnu.org/software/bash/manual/
.


BASH can be downloaded at
http://ftp.gnu.org/gnu/bash/


KORN SHELL (
ksh

commands)


The
Korn

shell

(
ksh
) is a UNIX shell which was
developed by David
Korn

in the early 1980s.


It is backwards
-
compatible with the Bourne shell
but includes many features of the C shell as well,
such as a command history


The main advantage of
ksh

over the traditional
Unix shell is in its use as a programming language.


Several features were gradually added, while
maintaining strong backwards compatibility with
the Bourne shell.



ALMQUIST SHELL (ash commands)


The
Almquist

shell

(also known as
A Shell
,
ash
) was
originally developed by Kenneth
Almquist‘s


it is a fast, small, POSIX
-
compatible Unix shell designed
to
replace the Bourne shell

in later BSD distributions.


Originally it
did not feature line editing

or command
history
mechanisms
-

should be moved into the terminal
driver;


ash are installed as the default shell (
/bin/
sh
) on
FreeBSD,
NetBSD
,
DragonFly

BSD and
Minix
.


Debian's

version of ash is known as
Debian

Almquist

Shell
(dash).


METHODS TO GET SHELL
INTERFACE


Shell Prompts


It looks like an
MS
-
DOS screen.



Users
type commands
at a shell prompt,


the
shell interprets
these commands,


and then the shell
tells the OS
what to do.


Linux functions
can be completed faster
from the shell
prompt than from a GUI.

METHODS TO GET SHELL
INTERFACE


Terminal Windows


synonymous with a
command line shell
or
text terminal
, the
term
terminal

covers all remote terminals, including graphical
interfaces.


A terminal emulator inside a GUI is often called as
terminal
window
.


A terminal window
allows the user access to Command Line
Interfaces (CLI) and Text User Interface

applications.


On Unix
-
like OS, it is common to have one or more terminal
windows
connected to the local machine
.


METHODS TO GET SHELL
INTERFACE


Virtual Terminal


In open systems, a
virtual terminal

(
VT
) is an
application service that:


Allows host terminals on a multi
-
user network
to interact with
other hosts regardless of terminal type and characteristics
,


Allows
remote log
-
on by LAN managers
for the purpose of
management,


Allows users
to access information from another host
processor
for transaction processing,


Serves as a
backup facility
.


ITU
-
T defines a virtual terminal protocol based on the OSI
application layer protocols.


LINUX TEXT EDITOR


vi editor


Vi is often the
default editor
that pops up when we're ready to write an
e
-
mail message or when we're posting a News message.




Vi is
complicated

and seems difficult to learn at first.




it is
often the default
for Unix and Linux systems.



pico

(
Pine composer
) editor


Pico is a
simple text editor
that provides
straight
-
forward options
and easy
-
to
-
use commands
.




it provides everything necessary to write long documents with minimal
hassles.




Pico is
not very good when manipulating certain types of files
such as
making changes to
.
cgi

files

LINUX TEXT EDITOR


emacs

(
Editor Macros
) editor


Emacs

falls somewhere between the straightforward Pico and the
complicated Vi.




Unlike Vi, we don't need to switch between modes to perform basic
text editing functions.




powerful commands themselves are
difficult to remember
.



mcedit

editor (
Midnight Commander Editor
)


mcedit

is a link to
mc
, the main GNU Midnight Commander executable.


Executing GNU Midnight Commander under this name requests
staring
the internal editor and opening the
file

specified on the command
line.



The editor is based on the
terminal version
of
cooledit

(standalone
editor for X Window System).



LINUX TEXT EDITOR


joe

(
Joe’s Own Editor
)


JOE is a
full featured
terminal
-
based screen editor


It is distributed under the
GNU General Public License

(GPL).


JOE has been around since
1988


It is comes standard with many Linux distributions.


JOE is being maintained by its original author
Joseph Allen


JOE is
written in C

and its only dependency is
libc
.


LINUX TEXT EDITOR


Graphical text editors:

Nedit

editor


already installed in Computer Systems


smaller and easier to use/customise than
emacs



easy to get it to do syntax colouring for Java/HTML etc


suitable for Unix/Linux only (see below)


impossible to use via telnet/
ssh



more difficult than
emacs

Xedit

editor


It is a text editor for the
X Window System on Linux and UNIX


It is a
visual text editor
for the virtual machine operating system