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.   


Reply via email to