Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
74 views35 pages

Shells Scripts: Andrew Nashel

The document discusses the history of shell scripts and Unix games. It covers early shell scripts and variables, control structures, and examples. It also discusses some of the earliest and most influential computer games developed for Unix systems, including SpaceWar, Nethack, and XPilot. It notes how some games and gaming companies were influenced by former UNC computer science students and professors.

Uploaded by

satiz143844
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views35 pages

Shells Scripts: Andrew Nashel

The document discusses the history of shell scripts and Unix games. It covers early shell scripts and variables, control structures, and examples. It also discusses some of the earliest and most influential computer games developed for Unix systems, including SpaceWar, Nethack, and XPilot. It notes how some games and gaming companies were influenced by former UNC computer science students and professors.

Uploaded by

satiz143844
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 35

COMP 121-401: UNIX Programming

Shells Scripts

Andrew Nashel

[email protected]
Department of Computer Science

February 6, 2004

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Course topics
• Shell scripts
• Homework

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Shells scripts
Any collection of shell commands can be
stored in a file called a shell script. Scripts
have variables and flow control statements
like other programming languages.

There are two popular classes of shells:


C shell (csh) and variants (tcsh)
Bourne shell (sh) and variants (bash, ksh)

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Invoking scripts
There are two ways to launch scripts:
1) Direct interpretation
csh scriptfile [args …]
2) Indirect interpretation
The first line of the file must be
#!/bin/csh
and the file must be executable.

C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Variables
To set variables:
set X [= value]

Variable contents are accessed using ‘$’:


echo $PATH

To count the number of variable elements:


echo $#Y
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Variables cont’d
To create lists:
set Y = (abc 1 123)

To set a list element:


set Y[2] = 3

To view a list element:


echo $Y[2]
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Command arguments
A shell script to swap files:
#! /bin/csh –f
set tmp = $argv[1]
cp $argv[2] $argv[1]
cp $tmp $argv[2]

The number of arguments to a script:


$#argv
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
if-then-else
if ( expr ) simple-command

if ( expr ) then
commandlist-1
[else
commandlist-2]
endif

C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
if-then-else cont’d
An example:
if ($#argv <> 2) then
echo “we need two parameters!“
else
set name1 = $argv[1]
set name2 = $argv[2]
endif

C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Loops
while ( expr )
commandlist
end

foreach var ( worddlist )


commandlist
end

C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
switch
switch ( str )
case string1:
commandlist1
breaksw
case string2:
commandlist2
breaksw
default
commandlist
endsw

C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
goto (Considered harmful!)
To jump unconditionally:
goto label

A label is a line such as:


label:

The classic paper on why not to use goto:


Go To Statement Considered Harmful
Edsger W. Dijkstra, CACM, March 1968
C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
An example script
#! /bin/csh -f
foreach name ($argv)
if ( -f $name ) then
echo -n "delete the file '${name}' (y/n/q)?"
else
echo -n "delete the entire dir '${name}' (y/n/q)? "
endif
set ans = $<
switch ($ans)
case n: continue
case q: exit
case y: rm -r $name; continue
endsw
end

C Shell
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
Homework
Due Monday:
Write a shell script that reads a file and
replaces a particular text string with another,
all input given interactively.

Hint: Use sed for text replacement.

This is your final graded assignment!

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Homework cont’d
Example:
$ ./myscript
File to read: news.txt
Search text: Duke
Replacement text: Dookie
Dookie University
Department of Mathematics
Weekly Calendar

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Hmmmm.

Okay, shell scripts are useful,


but a little boring.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


COMP 121-401: UNIX Programming

Unix Games!

Andrew Nashel

[email protected]
Department of Computer Science

February 6, 2004

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


SpaceWar
SpaceWar may be the
most important
computer game ever.
The first version was
developed for the PDP-1
at MIT in 1960. The
game has been under
essentially constant
development since.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


SpaceWar cont’d
The first CRT display was a converted
oscilloscope used to play SpaceWar.
The first trackball (and thus, the first
mouse) was a SpaceWar control at
MIT. It is said that Ken Thompson
salvaged a PDP-1 and created a new
operating system, now called UNIX, so
that he could play SpaceWar.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Spacewar cont’d
The PDP-1

Real 133+ gamers

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Nethack
A Rogue-like classic dungeon crawl game;
retrieve the Amulet of Yendor!

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


XPilot
The classic multiplayer 2D shooter.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


XBill
Whack the computer
hacker and free the
computers from the
awful virus!

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Xmame
Multiple Arcade Machine Emulator

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Xconq
A general purpose strategy game.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Tux Racer
Be the penguin.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Freeciv

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


FlightGear

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


BZFlag

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


COMP 121-401: UNIX Programming

UNC Games!

Andrew Nashel

[email protected]
Department of Computer Science

February 6, 2004

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Adventure
Warren Robinett, a former UNC-CS
professor, wrote Adventure, the first
action-adventure video game, in 1978
and it sold over 1 million copies.

He also founded The


Learning Company for
educational software.

It included the
first easter egg!

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Ratchet and Clank
Max Garber, UNC ’02, works at Insomnic Games, Los
Angeles

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Buffy and Wrath
Stephan Sherman and Vince Scheib, ’02 work for The
Collective in Newport Beach, CA

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Midnight Club 2
Andrew Zaferakis, UNC ’02, works for Rockstar San
Diego

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL


Vicious Cycle
Greg Coombe won’t ever graduate.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

You might also like