SHELL SCRIPTING
What is Shell Scripting?
A shell script is a computer program designed to be run by the Unix shell, a command line interpreter.
Introduction:
A shell script is a text file that contains a sequence of commands for a UNIX-based operating system. It's called a shell script because it combines into a "script" in a single file a sequence of commands that would otherwise have to be presented to the system from a keyboard one at a time. The shell is the operating system's command interpreter and the set of commands you use to communicate with the system. A shell script is usually created for command sequences for which a user has a repeated need. You initiate the sequence of commands in the shell script by simply entering the name of the shell script on a command line.
In the DOS operating system, a shell script is called a batch file. In IBM's mainframe VM operating systems, it's called an EXEC.
Usage of Shell Scripting:
1. Customizing your work environment.
2. Automating Your Daily Task.
3.Automating Repetitive Task.
4.Executing Important Procedures like shutting down the system,formatting a disk,Creating a file system on it,mounting the file system,letting the users use the floppy and finally un mounting the disk.
5.Performing the same operation on many files.
0
Advantages:
1.Easy to use.
2.Quick start, and interactive debugging.
3.Time Saving.
4.Sys Admin task automation.
5.Shell scripts can execute without any additional effort on nearly any modern UNIX / Linux / BSD / Mac OS X operating system as they are written an interpreted language.
Disadvantages:
1.Compatibility problems between different platforms.
2.Slow execution speed.
3.A new process launched for almost every shell command executed.
1.Compatibility problems between different platforms.
2.Slow execution speed.
3.A new process launched for almost every shell command executed.
List of commands in Shell Scripting:
apropos Search Help manual pages (man -k) apt-get Search for and install software packages (Debian/Ubuntu) aspell Spell Checker awk Find and Replace text, database sort/validate/index basename Strip directory and suffix from filenames bash GNU Bourne-Again SHell bc Arbitrary precision calculator language bg Send to background break Exit from a loop • builtin Run a shell builtin bzip2 Compress or decompress named file(s) cal Display a calendar case Conditionally perform a command cat Concatenate and print (display) the content of files cd Change Directory cfdisk Partition table manipulator for Linux chgrp Change group ownership chmod Change access permissions chown Change file owner and group chroot Run a command with a different root directory chkconfig System services (runlevel) cksum Print CRC checksum and byte counts cmp Compare two files comm Compare two sorted files line by line command Run a command - ignoring shell functions • continue Resume the next iteration of a loop • cp Copy one or more files to another location cron Daemon to execute scheduled commands crontab Schedule a command to run at a later time csplit Split a file into context-determined pieces cut Divide a file into several parts date Display or change the date & time dc Desk Calculator dd Convert and copy a file, write disk headers, boot records ddrescue Data recovery tool declare Declare variables and give them attributes • df Display free disk space diff Display the differences between two files diff3 Show differences among three files dig DNS lookup dir Briefly list directory contents dircolors Colour setup for `ls' dirname Convert a full pathname to just a path dirs Display list of remembered directories dmesg Print kernel & driver messages du Estimate file space usage echo Display message on screen • egrep Search file(s) for lines that match an extended expressio eject Eject removable media enable Enable and disable builtin shell commands • env Environment variables ethtool Ethernet card settings eval Evaluate several commands/arguments exec Execute a command exit Exit the shell expect Automate arbitrary applications accessed over a terminal expand Convert tabs to spaces export Set an environment variable expr Evaluate expressions false Do nothing, unsuccessfully fdformat Low-level format a floppy disk fdisk Partition table manipulator for Linux fg Send job to foreground fgrep Search file(s) for lines that match a fixed string file Determine file type find Search for files that meet a desired criteria fmt Reformat paragraph text fold Wrap text to fit a specified width. for Expand words, and execute commands fsck File system consistency check and repair function Define Function Macros fuser Identify/kill the process that is accessing a file gawk Find and Replace text within file(s) getopts Parse positional parameters grep Search file(s) for lines that match a given pattern groupadd Add a user security group groupdel Delete a group groupmod Modify a group groups Print group names a user is in gzip Compress or decompress named file(s) hash Remember the full pathname of a name argument head Output the first part of file(s) help Display help for a built-in command • history Command History hostname Print or set system name iconv Convert the character set of a file id Print user and group id's if Conditionally perform a command ifconfig Configure a network interface ifdown Stop a network interface ifup Start a network interface up import Capture an X server screen and save the image to file install Copy files and set attributes jobs List active jobs • join Join lines on a common field kill Stop a process from running killall Kill processes by name less Display output one screen at a time let Perform arithmetic on shell variables • link Create a link to a file ln Create a symbolic link to a file local Create variables • locate Find files logname Print current login name logout Exit a login shell • look Display lines beginning with a given string lpc Line printer control program lpr Off line print lprm Remove jobs from the print queue ls List information about file(s) lsof List open files man Help manual mkdir Create new folder(s) mkfifo Make FIFOs (named pipes) mkisofs Create an hybrid ISO9660/JOLIET/HFS filesystem mknod Make block or character special files more Display output one screen at a time most Browse or page through a text file mount Mount a file system mtools Manipulate MS-DOS files mtr Network diagnostics (traceroute/ping) mv Move or rename files or directories mmv Mass Move and rename (files) nice Set the priority of a command or job nl Number lines and write files nohup Run a command immune to hangups notify-send Send desktop notifications nslookup Query Internet name servers interactively open Open a file in its default application op Operator access passwd Modify a user password paste Merge lines of files ping Test a network connection pkill Stop processes from running popd Restore the previous value of the current directory pr Prepare files for printing printf Format and print data ps Process status pushd Save and then change the current directory pv Monitor the progress of data through a pipe pwd Print Working Directory quota Display disk usage and limits quotacheck Scan a file system for disk usage quotactl Set disk quotas ram ram disk device rcp Copy files between two machines read Read a line from standard input • readonly Mark variables/functions as readonly rename Rename files return Exit a shell function rev Reverse lines of a file rm Remove files rmdir Remove folder(s) rsync Remote file copy (Synchronize file trees) screen Multiplex terminal, run remote shells via ssh scp Secure copy (remote file copy) sdiff Merge two files interactively sed Stream Editor select Accept keyboard input seq Print numeric sequences set Manipulate shell variables and functions shift Shift positional parameters shopt Shell Options shutdown Shutdown or restart linux sleep Delay for a specified time slocate Find files sort Sort text files source Run commands from a file '.' split Split a file into fixed-size pieces ssh Secure Shell client (remote login program) stat Display file or file system status strace Trace system calls and signals su Substitute user identity sudo Execute a command as another user sum Print a checksum for a file suspend Suspend execution of this shell • sync Synchronize data on disk with memory tail Output the last part of file tar Store, list or extract files in an archive tee Redirect output to multiple files test Evaluate a conditional expression time Measure Program running time timeout Run a command with a time limit times User and system times touch Change file timestamps tr Translate, squeeze, and/or delete characters true Do nothing, successfully tsort Topological sort tty Print filename of terminal on stdin type Describe a command ulimit Limit user resources umask Users file creation mask unalias Remove an alias uname Print system information unexpand Convert spaces to tabs uniq Uniquify files units Convert units from one scale to another unset Remove variable or function names unshar Unpack shell archive scripts until Execute commands (until error) useradd Create new user account userdel Delete a user account usermod Modify user account users List users currently logged in uuencode Encode a binary file uudecode Decode a file created by uuencode vi Text Editor vmstat Report virtual memory statistics wait Wait for a process to complete • watch Execute/display a program periodically wc Print byte, word, and line counts which Search the user's $path for a program file while Execute commands who Print all usernames currently logged in whoami Print the current user id and name (`id -un') wget Retrieve web pages or files via HTTP, HTTPS or FTP write Send a message to another user xargs Execute utility, passing constructed argument list(s) xdg-open Open a file or URL in the user's preferred application. yes Print a string until interrupted zip Package and compress (archive) files. . Run a command script in the current shell !! Run the last command again ### Comment / Remark
Flow chart of shell scripting is given below:
File Permission:
rwx = 111 in binary = 7
rw- = 110 in binary = 6
r-x = 101 in binary = 5
r-- = 100 in binary = 4
Small shell script program
#!/bin/bash
# My
first script
echo
"Hello World!“
How To Create A Variable:
To
create a variable, put a line in your script that contains the name of the
variable followed immediately by an equal sign ("="). No spaces are
allowed. After the equal sign, assign the information you wish to store
Ex:
title=“IOPP course”
$title will takes the value stored in it
•Names must start with a letter.
•A name must not contain embedded spaces. Use underscores
instead.
•You cannot use punctuation marks.
More Branching
#!/bin/bash
echo
-n "Enter a number between 1 and 3 inclusive > "
read
character
if
[ "$character" = "1" ]; then
echo "You entered one."
elif [
"$character" = "2" ]; then
echo "You entered two."
elif [
"$character" = "3" ]; then
echo "You entered three."
else
echo "You did not enter a number between
1 and 3."
fi
Case Constructs:
#!/bin/bash
echo
-n "Enter a number between 1 and 3 inclusive > "
read
character
case
$character in
1 ) echo "You entered one." ;;
2 ) echo "You entered two." ;;
3 ) echo "You entered three." ;;
* ) echo "You did not enter a number
between 1 and 3."
esac
Loops:
#!/bin/bash
number=0
while
[ "$number" -lt 10 ]; do
echo "Number = $number"
number=$((number + 1))
done
Some examples of shellscripts:
1.
Write a Shell script to read an integer and
print whether it is even or odd.
|
soln:
read num
if [ `expr $num % 2` -eq 0 ]
then
echo "$num is Even."
else
echo "$num is Odd."
fi
if [ `expr $num % 2` -eq 0 ]
then
echo "$num is Even."
else
echo "$num is Odd."
fi
2.
Write a Shell script to do all arithmetic
(addition, subtraction, multiplication, division, modulus) operations
|
soln:
echo “Enter two number”
read a b
echo “1.Add 2.Sub 3.Mul 4.Div 5.Exit”
read op
case $op in
1) expr ‘$c=$a+$b’ ;;
2) expr ‘$c=$a-$b’ ;;
3) expr ‘$c=$a\*$b’ ;;
4) expr ‘$c=$a/$b’ ;;
5) exit
esac
echo $c
THANK YOU