Hello guys:
Here is a hand out for the shell programming part of the presentation.
It is a brief overview for those new to the subject. I will elaborate on
the scripts which I believe are sufficient to show the power of shell
scripting. I will probably compare it to applescript and windows
scripting.
I will have three more, one about programming languages and utilities
supported. I will write a little interface that will allow a web based
interaction with the system for commands such that yield appropriate
output.
Another about some editors. I will probably compare bluefish, glimmer,
and some other one I have seen which work just about the same. This can
show the power of open source because I think these applications share
the same code.
Another about anjuta and quanta to show internet and desktop
development. I have been playing with kdevelp and seems really cool. It
did not know you could use it for general programming. I will probably
use that as well.
That is going to be all in general. I would love to talk about cvs but I
do not know anything about it and I do not think I can learn about it
before the presentation. If anyone else would like to do that I think it
would be beneficial.
___________________________________________________________________
Shell Programming
Definition
A shell is a program serving as an interface between user and operating
system to execute commands interactively or automatically.
Types
There is a wide variety of shells. Their main differences are syntax and
features. Here is a list of shells included with Red Hat Distribution.
ash A small shell (sh-like)
ash.static A version of ash not dependent on software libraries
bash The Bourne Again Shell is based on the Bourne shell
bash2 Newer version (2.03) of the Bourne Again Shell
ksh The public-domain Korn shell
pdksh A symbolic link to ksh
rsh The restricted shell (for network operation)
sh A symbolic link to bash
tcsh A csh-compatible shell plus additional features
zsh A compatible csh, ksh, and sh shell
Usage
To customize user session: set home directory, mail spool, path of
executables, reminders, etc
To execute commands: the shell can execute built-in commands and
operating system commands.
To program commands: a list of commands compiled into a text file.
Example 1
$ ( default prompt waiting for commands)
[EMAIL PROTECTED] $ ( customized prompt )
Example 2
$ cat .bashrc ( executing a command )
# .bashrc
# User specific aliases and functions
alias ls="ls -h --color"
alias cp="cp -i"
alias rm="rm -i"
alias mv="mv -i"
alias df="df -h"
alias vi=vim
alias mpg="mpg321 -Z"
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
$ ( end of output/back to prompt )
Features ( bash )
<tab> general completion of the text at prompt
>, >> Output Redirection
<, << Input Redirection
! Pipe output
& Run process in background
; Separate commands on the same line
*, ? Wild cards
$container use container for variable
kill Terminate running jobs
alias Command substitution
for, while Iteration statements
function( ) Custom functions
For details on bash visit
http://www.gnu.org/software/bash/bash.html
For Shell Programming
http://wihok.8m.com/linux/rhl13.htm#E68E99
The importance of shell programming
Shell languages are powerful and easy to learn.
Imagine having rotate the logs of a webserver manually, no problem:
#!/usr/bin/bash
# script to rotate logs of www.oursite.net
# getting the current date and formatting MonthDayYear
date=$( date "+%m%d%Y")
#changing the current directory of the current log and renaming the file
cd /usr/www/logs/www.oursite.com
mv access_log access_log.$date
#restart the web server therefore creating a new log file
/usr/www/bin/apachectl restart
#a large log might be desirable
cat access_log.$date >> fulllog
#placing the log for viewing
mv access_log.$date /usr/www/hosts/www.oursite.com/stats/logfiles/
# compressing the file
# note that the full path of is required otherwise cd to the directory
could do the job
gzip /usr/www.hosts/www.oursite.com/stats/logfiles/access_log.$date
#end of script
Rewriting this script with a programming language such as c would be
lengthier and more complex.
Scripts, like any other command in Linux can be set to execute
automatically at any given time when used in combination with a utility
such as cron.