Introduction to linux shell script programming
Download
1 / 65

Introduction to Linux - PowerPoint PPT Presentation


  • 386 Views
  • Updated On :

Introduction to Linux Shell Script Programming. Summer course, Institute of Bioinformatics National Yang-Ming University. Menu Today!. Part I: Shell Script in Practice Basics about Shell and Exercises of system Shell Scripts Perl Shell Script Part II: The applications of Shell Script

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Introduction to Linux ' - EllenMixel


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Introduction to linux shell script programming l.jpg

Introduction to Linux Shell Script Programming

Summer course, Institute of Bioinformatics

National Yang-Ming University


Menu today l.jpg
Menu Today!

  • Part I: Shell Script in Practice

    • Basics about Shell and Exercises of system Shell Scripts

    • Perl Shell Script

  • Part II: The applications of Shell Script

    • Massive routing jobs

    • Scheduling

    • Backup


Shell l.jpg

or this?

This?

This?

Shell !?


First glance linux shell l.jpg
First glance — Linux Shell

  • Why Shell?

    • Computer only realize the command in binary form which is difficult for most of human

    • So OS provides a special program call ‘shell’ accepts human’s command in ‘readable’ form and translates them into 1 and 0 stream

Your

commands

Converted

binary commands

Linux shell

OS kernel

$ ls

$ man

$ date

00010001010

10010110000

11100110100

BASH

Linuxkernel



Kernel l.jpg
Kernel

  • Definition

    • It is heart of Linux OS

    • It manages all resources of OS

  • What it charges

    • I/O (Input and Output)

    • Process

    • Devices

    • File

    • Memory


What is shell l.jpg
What is Shell?

  • Shell is an command language interpreter that executes commands read from the standard input device (your keyboard) or from a file

  • In Linux OS, it may use one of the following most popular shells (BASH, CSH and KSH)

  • In Microsoft DOS, the name of shell is COMMAND.COM, but it is NOT as powerful as Linux shell


Operating system shell l.jpg
Operating System Shell

  • Shell of an operating system

    • it is a program that presents an interface to various operating system functions and services

  • Why named “shell”?

    • it is an outer layer of interface between the user and the innards of the OS (kernel)


Shell an interface l.jpg
Shell, an interface

  • Main categories

    • CLI (Command Line Interface)

      • it makes things clear

      • text shell (what we are going to learn now)

    • GUI (Graphical Use interface)

      • it makes things look easy

      • graphic shell (what people always use nowadays)


Slide10 l.jpg
CLI

  • Unix shells

    • Bourne shell (sh)

      • Almquist shell (ash)

      • Bourne-Again shell (bash)

    • C shell (csh)

      • TENEX C shell (tcsh)

    • Korn shell (ksh)

    • Scheme shell (scsh)

    • Z shell (zsh)

  • Plan 9 and Unix

    • rc shell (rc)

  • DOS: command.com

  • OS/2 and windows NT: cmd.exe

  • DOS, OS/2 and NT

    • 4DOS, 4OS2, 4NT


Slide11 l.jpg
GUI

DOSSHELL

  • MS windows

    • windows explorer

    • litestep

    • Geoshell

    • BB4Win

    • Emerge Desktop

  • Mac OS: Machitosh Finder

  • X-window system (Unix)

    • KDE, GNOME

    • Blackbox, CDE

  • DOSSHELL

MS

Mac

GNOME

KDE



Bell labs the beginning l.jpg
Bell Labs: The beginning

  • The research and development center of Lucent Technologies, formerly AT&T.

  • Bell labs is one of the most renowned scientific laboratories in the world

Alexander Graham Bell founds the company that becomes AT&T with 2 financial backers at 1876. He is also the inventor of the telephone.

His famous sentence “Mr. Watson. Come here! I want you!” were the first words to travel over a wire, ringing in the birth of electronic communication

Alexander Graham Bell (1847~1922)


Bell labs brief l.jpg
Bell Labs: Brief

  • Its official name is Bell Telephone Laboratories or Bell Labs which was originally the research and development arm of the United states Bell System, and it was also the premier corporate facility of its type, developing a range of revolutionary technologies from telephone switches to specialized coverings for telephone cables, to transistor.

  • The work done by Bell Labs are

    • Research

      • theoretical underpinnings for communications

      • it includes math, physics, material science, behavioral sciences, computer programming

    • System engineering

      • concerning itself with conceiving the highly complex systems that make up the telecommunication networks

    • Development

      • hardware and software for Bell System’s communication networks


Bell labs big events l.jpg
Bell Labs: big events

  • 1933, discovered radio waves emitted from center of galaxy

  • 1947, invention of transistor (Nobel Prize in Physics in 1956)

  • 1948, Claude Shannon published “A Mathematical Theory of Communication”

  • 1954, the development of photovoltaic cell

  • 1957, electronic music by Max Mathews

  • 1970s, Unix and C language

  • 1971, computerized switching system for telephone traffic

  • 1980, the realization of the world’s first single chip 32-bit microprocessor, the BELLMAC-32A

  • 1980, C++ language

  • late 1980s and early 1990s, developed Plan9 as a replacement for Unix

  • 1990s, inferno OS


Variables in linux l.jpg
Variables in Linux

  • In the machine you are using, it has memory for storing your data. These memory are divided into smaller locations (address) and one can give them a name called memory variable or variable

  • There are 2 kinds of variables

    • System variables

      • created and maintained by O.S. itself, all their name are capital.

    • User-defined variable (UDV)

      • created and maintained by user, all their name are lower-case.

  • Check variables

    • set: check all variables

    • env: check system variables only


The shell you use now l.jpg
The shell you use now

  • What is your current shell?

    • grep username /etc/passwd

    • echo $SHELL

    • chsh (you can change the default shell here)

  • How many shell you can use

    • cat /etc/shells

  • How to change current shell temporarily?

    • just type the name of new shell


Script components l.jpg
Script Components

  • designator line

    • Tell the O.S. where is the correct interpreter

    • it begins with #!

  • comments

    • it begins with #

  • shell commands

    • correct separator: semicolon (;) or new line (\n)


Tea time l.jpg

Tea Time

Take a break!

Review what you have learned



Your first bash shell script how are you doing l.jpg
Your first Bash shell script: How are you doing?

locate the shell you use, start with #!

comments, start with #

set variables (bash style)

output the results


Discussion the difference between apostrophes and quotation marks l.jpg
Discussion:the difference between apostrophes and quotation marks


Your 2 nd bash shell script some arithmetic computations l.jpg
Your 2nd Bash shell script: some arithmetic computations

locate the shell you use, start with #!

comments, start with #

No variable declaration

Declare as Integers



Declare l.jpg
Declare

  • Syntax: declare [-afir] variable[=value]

  • Options:

    • -a: declared as array

    • -f: declared as function

    • -i: declared as integer

    • -r: declared as read-only variable



Multiple arguments how to access l.jpg
Multiple Arguments:How to access?


Logical operators l.jpg
Logical operators

arithmetic only, not for text

Both arithmetic and text


Flow control l.jpg
Flow control

  • Branches

    • If then, else

    • Case

  • Loops (for, while, until)

    • it is a block of code that iterates a list of commands as long as the loop control condition is true



1 if then else l.jpg
(1) If then, else

  • Syntax and example:

    • If [condition 1];then [statement 1]

    • elif [condition 2];then [statement 2]

    • else [statement 3]

    • fi

Start

cond 1

else

then

cond 2

then

else

stat 3

stat 2

stat 1


Simple form l.jpg
Simple form

User enter …

(stored as yn)

yn=y

then

else

STOP!

script is running


Complex conditions l.jpg
Complex conditions

User enter …

(stored as yn)

yn=y || yn=Y

else

then

STOP!

script is running





Check and create file l.jpg
Check and Create file

check properties

while it exists

ask user whether wanna create it

while it does not exist


Remark if then else statements l.jpg
Remark: if then, else statements

  • You can link several conditions by || or &&

  • Each condition must be between [ ]

    • Caution! the space between condition statement and [ or ] is necessary


Advanced example l.jpg
Advanced Example

Analyze your host ~


2 case l.jpg
(2) Case

  • syntax and example

    • case variable in

      • value_1) [statements_1] ;;

      • value_2) [statements_2] ;;

      • value_3) [statements_3] ;;

      • *) [statements_for_exception]

    • esac




For loop l.jpg
for loop

  • syntax:

    • for(( initial value; stop criteria; increment/decrement ))

      • do [statements]

    • done

  • simple test

    • The sum from 1 to 100


Do what gauss has done by shell script l.jpg
Do what gauss has doneby shell script


While loop and until loop l.jpg

syntax

while [ condition ]

do [statement]

done

syntax

until [ condition ]

do [statements]

done

while loop and until loop


Rewritten in while loop l.jpg
Rewritten in while loop


Rewritten in until loop l.jpg
Rewritten in until loop


Compare while and until l.jpg
Compare while and until

>

<=

while it reaches, stop

while it holds, continue


For loop revisit l.jpg
for loop, revisit

  • alternative syntax

    • for variable in variable_list

      • do [statement]

    • done

  • it differs significantly from its C counterpart



How you login l.jpg
How you login?

SSH/Telnet

User

HOST

enter username and password

NOT found

check 1

Login failed

NOT pass

found

check 2

read UID amd GID

read setting of home directory and shell

Login successfully

pass

search the username you entered

in /etc/passwd

check the password you entered

in /etc/shadow


Inside etc passwd l.jpg
inside /etc/passwd

  • Notes for each field

    • password has been moved to /etc/shadow

    • UID (32bits)

      • 0 (administrator), 1~500 (system UID), rest for others


Etc passwd and cut command l.jpg
/etc/passwd and cut command

  • cut

    • function: select portions of each lines of a file

    • syntax: cut –f list [-d delim] [file]

    • example: cut –f 1 –d : myfile

    • the example above uses “:” to separate each line of myfile into fields, then select the first field for each line

part of /etc/passwd of Mandrake 9.0



Summary for while and until l.jpg
Summary: for, while and until

  • For loop:

    • for(( triple condition))

      • do [statements]

    • done

  • While

    • while [ condition ]

      • do [statement]

    • done

  • alternative For loop

    • for variable in variable_list

      • do [statement]

    • done

  • Until

    • until [ condition ]

      • do [statements]

    • done


Select l.jpg
select

  • syntax:

    • select variable [in list]

      • do [statements]

      • break … it make script stop after selection

    • done

  • Note:

    • if in list is not given, it will read list from arguments (shown in ex15.sh)

    • compare to alternative for loop



Function l.jpg
Function

  • syntax

    • function function_name {statements}

    • function function_name (){statements}


Create menu with function l.jpg
Create menu with function

omitted list here, it will be read from arguments

call function here, call by name


File i o l.jpg
File I/O

#----- The file to read

myFile="/root/somefile"

#----- The "big" data variable

myData=""

#----- Now the read

myData=`cat $myFile`

#----- Show that the data is really in the variable...

#----- This is in the same format as the original file, new lines preserved

echo "$myData"

#----- Show the data in non-quoted format, the space becomes the separator

echo $myData


Read line by line l.jpg
Read line-by-line

#----- The file to read

myFile="/root/somefile"

#----- The line data variable

myLine=""

#----- Loop to read file data content

while [ 1 ]

do

read myLine || break

echo "$myLine"

done < $myFile


Write column by column l.jpg
Write column-by-column

#----- Set up the path and name of file

myFile="/root/temp.txt"

#----- Load data string, the separator here is the colon (:)

myData="one:two:three"

#----- Here is the write...

echo "$myData" | tr ':' '\n' > $myFile


How to debug l.jpg
How to debug?

  • please man your shell first

    • man bash

    • man sh

  • syntax check

    • bash --debugger script_name

    • sh –n script_name


References l.jpg
References

  • Advanced Bash Scripting Guide

    • http://www.tldp.org/LDP/abs/html/

  • Bash Reference Manual

    • http://www.gnu.org/software/bash/manual/bashref.html

  • Learn from examples!



ad