0% found this document useful (0 votes)
100 views

Introduction To Advanced UNIX 2010

This document outlines an introduction to advanced UNIX course held on March 9, 2010. It provides an overview of the course content which includes an introduction to the basic form of C-shell scripts, C-shell programming, and references additional advanced UNIX materials. It also notes that there will be an informal lab session from 2-3 PM in the UNIX lab to provide hands-on experience with some of the concepts covered.

Uploaded by

Alok Tiwari
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
100 views

Introduction To Advanced UNIX 2010

This document outlines an introduction to advanced UNIX course held on March 9, 2010. It provides an overview of the course content which includes an introduction to the basic form of C-shell scripts, C-shell programming, and references additional advanced UNIX materials. It also notes that there will be an informal lab session from 2-3 PM in the UNIX lab to provide hands-on experience with some of the concepts covered.

Uploaded by

Alok Tiwari
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 22

Introduction to Advanced UNIX

March 9 2010

Kevin Keay

Outline

Overview Resources The basic form of a typical C-shell script Introduction to C-Shell Programming Advanced UNIX materials: The following are PDF documents that may be used for reference but wont be discussed in detail during this short course: Part 1 : Scripts Part 2 : A summary of useful software Part 3 : Reanalysis products

Lab session (informal) 2-3 PM UNIX Lab


See:
http://www.earthsci.unimelb.edu.au/~kevin/UNIX_Course/Advanced_UNIX_Lab_Session_2010.pdf

Overview
This is a practical course that is designed
to give you the basic skills to write UNIX C-shell scripts You can only truly understand the concepts by putting them into practice!

Overview (2)
We will look at the basic form of a C-shell script There will be a quick tour through Introduction to C-Shell
There are some extra advanced UNIX materials (Parts 1-3)
that you may need to reference. Some aspects will be looked at during the lab session but they are intended for personal reference Part 1 covers C-shell scripts and some additional concepts Part 2 is a summary of some useful software Part 3 focuses on downloading and decoding reanalysis data (NetCDF and GRIB) Finally, there is a short Lab session

Programming

Resources
A very useful and concise reference book covering UNIX and the C shell is:
UNIX in a Nutshell, OReilly and Associates (Engineering Library: 005.43
GILL).

A useful online resource from the University of Surrey, UNIX Tutorial for
Beginners, is available at: http://www.ee.surrey.ac.uk/Teaching/Unix/
http://www.earthsci.unimelb.edu.au/~kevin/UNIX_Course/ you are using e.g. man awk. However sometimes the pages are not installed or are in an unexpected location. It may be more convenient to use a search engine like Google to find information on a command.

For PDF files of the handouts see:

All UNIX commands should have a manual (man) page on the machine that

The basic form of a typical C-shell script

The first line of a C-shell script (text file) is:


#!/bin/csh f The f option tells the script not to source (read) the users .cshrc file; this is faster and also makes the script more portable. All other lines starting with # are comments Commands may be continued onto subsequent lines with \ Multiple commands can be placed on a single line with ; Spaces around operators and commands are required but there are no other restrictions

The basic form of a typical C-shell script (2)

For neatness, end the script with exit (not


Shell variables start with a $ (this is only
essential)

omitted with using set or @ - see below) The shell variable $#argv contains the number of arguments (items) typed on the command line. The items are referred to as shell variables $1, $2, $3, , $#argv

The basic form of a typical C-shell script (3)

For example:
myscript jja -4.56 yes would give: $#argv = 3 $1 = jja $2 = -4.56 $3= yes

The basic form of a typical C-shell script (4)

Shell variables are either string (text) or numeric A string variable is set (defined) by:

set var = value e.g. set x = Fred Note: Variables and values are case-sensitive i.e. x is not the same as X Variable names can be several characters e.g. set Case2 = 3 To print (display) the value of a variable: echo $var e.g. echo $x Fred

The basic form of a typical C-shell script (5)


A numeric variable is set (defined) by:

@ var = integer e.g. @ k = -7 Simple calculations may be performed e.g. @ j = ($k + 1) [j would be 7 + 1 = -6] @ k = ($k + 1) would change k from -7 to -6 Could also use C notation: @ k ++ @ j = (2 * $k - 5) [k= -7 would give j= -19] Note: Put spaces around operators like *, + etc. Floating point operations are not normally used in scripts but can be done with the command bc e.g. echo "2.1 + 6.3" | bc would print 8.4 on the screen set y = `echo "2.1 + 6.3" | bc` would save the answer in variable y

The basic form of a typical C-shell script (6)

A shell variable may be given the output

of a command (or user program) as in the bc example. In general: set var = `command` e.g. set ff = `ls *.dat` Remember: ls is used to list files. If the files are 5.dat 12.dat 13.dat then echo $ff would display: 5.dat 12.dat 13.dat

The basic form of a typical C-shell script (7)

To extract the individual elements of

variable ff we can use $#ff to find the number of items (similar to $#argv) e.g. echo $#ff would display 3 echo $ff[1] would display 5.dat echo $ff[2] would display 12.dat echo $ff[3] would display 13.dat

The basic form of a typical C-shell script (8)

A while loop is used to set up an iterative or


repetitive procedure: while (condition is true) commands end e.g. @ k = 1 while ($k <= 3) echo $k @ k = ($k + 1) end

# Initialise k # Process loop while k <= 3 # Display k # Increment k by 1

The basic form of a typical C-shell script (9)

A foreach loop is used to set up an iterative or

repetitive procedure involving files: foreach var (files) commands end e.g. foreach f ([A-Z]*) # f is a file starting with a capital letter echo $f # Print filename mv $f $f.cap # Rename file to have extension .cap end

The basic form of a typical C-shell script (10)

An if-else-endif structure is used to control script


branching: if (condition 1 is true) commands else if (condition 2 is true) commands else commands endif Note: use else if` not elseif

The basic form of a typical C-shell script (11)

e.g.
if ($x == 6 || $s == sea) then

do something
else if ($x > 10) then

do something else
else
go here if neither of the above conditions is true

endif Simpler or more complex forms are possible e.g. if ($y == 2) ls l *.dat

The basic form of a typical C-shell script (12)

The while or if (condition) uses C notation


for logical operations: || or && and == equal >= greater than or equal <= less than or equal != not equal > greater than < less than

The basic form of a typical C-shell script (13)

An example
#!/bin/csh f if ($#argv != 1) then echo Usage: myscript name exit # If incorrect usage end the script else # If only 1 argument, branch here set n = ($1) # Put n equal to $1 endif echo Your name is $n
# You could do other things here

exit

The basic form of a typical C-shell script (14)

Another example

#!/bin/csh f set ff = `ls *.dat`

# ff contains filenames *.dat @ nf = $#ff # nf equals the no. of files (items in ff) @j=1 # Set counter j to 1 while ($j <= $nf) # Loop while j <= nf set f = $ff[$j] # Set f to be the jth file ls l $f # List the details of f # We could use the file f as an argument to a command or program

myprog $f @j = ($j + 1) # Increment counter j by 1 end # Go here when j > nf echo We are finished! # A message to the screen

exit

Introduction to C-shell programming

Refer to the PDF guide:


http://www.earthsci.unimelb.edu.au/~kevin /UNIX_Course/Intro_to_CShell_Programming_2008.pdf

Advanced UNIX materials


The following are PDF documents that
may be used for reference but wont be discussed in detail during this short course: Part 1 : Scripts Part 2 : A summary of useful software Part 3 : Reanalysis products

Lab session
Lab session (informal) 2-3 PM UNIX
Lab See:
http://www.earthsci.unimelb.edu.au/~kevin/UNIX _Course/Advanced_UNIX_Lab_Session_2010.pdf

You might also like