Many of the sections leading up to this point in the chapter have hinted at the fact that the material covered in those sections would be better utilized in shell programs (called shell scripts). Indeed shell programming is the most powerful aspect of the C shell (or any shell for that matter). The C shell provides a rich scripting language that, at best, has a slight similarity to the programming language C. Shell scripting languages provide the user with a great many tools for handling everyday tasks around the system and even some less everyday tasks. A shell script can contain UNIX commands as well as the shell commands discussed in the previous and following chapters. Unlike compiler based languages, shell scripts are executed by the shell one line at a time. While this will obviously make for slower performance, advantage is gained in the ease of modifying programs without all of the hassle of compiling and linking. All that is required for a shell script to be executed is that it be made executable with the following command:
% chmod u+x script_name
Shell scripts are often written to handle some of the more tedious
tasks that a user encounters on a regular basis.
A simple C shell script could be a list of UNIX commands that archives
and compresses the users home directory and copies it to a specified
mounted disk partition for storage :
#!/bin/csh # backup tars and compresses ~/ and puts in storage on /dsk2/strg/ # tar -cvf dec18_95.nbdat.tar ~/ compress dec18_95.nbdat.tar cp dec18_95.nbdat.tar.Z /dsk2/strg/
With the exception of the lines that start with hash marks (#
),
the script is a list of simple UNIX commands.
This task could most certainly have been entered on a single command
line with use of a pipeline, but it illustrates the basic format of a
C shell script.
Almost any line starting with a hash mark will be ignored by the shell
and hence indicate programmer comments.
The one exception to this rule is the hash bang (#!
) sequence of
characters, this has special meaning to the shell.
It tells the shell which environment to start for execution of the
script.
This could be any shell or even other scripting environments such as
perl (Practical Extraction and Report Language) [1] or tcl
(Tool Command Language) [2] which are UNIX scripting languages
but not shells (at least not interactive shells like those discussed
in this book).
The shells are usually found in the /bin
directory, but this might
differ from system to system.
The powerful feature of shell scripts over simply writing the commands
on a command line is that scripts can contain many types of safety,
logging, and other features to provide a worry free and organized
working environment.
As the scripts in this chapter begin to become more complex, this
point should become clear.