The description of Shell Scripting From Scratch was as follows:
We'll develop, in real time, one shell script every five minutes to teach you the power and joy of shell programming. Topics will be taken from the audience as well as from some planned ahead of time. Learn the basics of debugging, looping, pipes, exit statuses, and other fun things.
The whole goal was to make this an interactive presentation, with lots of back and forth from the audience. Based on discussions with some GSLUGers before the conference, I thought my audience would be somewhat green, and was prepared to start at the beginning. To my pleasant suprise, when I described the shebang, I got rolled eyes ("Oh, no, we know that"), corrections ("isn't it actually called a hashpling/etc"), and polite requests ("Dude, step it up!").
The first audience request was for a way to make her Linux box become an alarm clock. We decided to make this a cron job that played a media file. Luckily Ubuntu comes with many .oggs, so I had something to work with. Sadly, none of them were embarassing or naughty, which would have been amusing.
We moved on from there, with requests from the audience, discussions of man pages and a few Linux daemons and tools along the way. I had a great time, and seems most participants did as well.
I used script
to make a log of the the terminal
that I was using during the presentation. script
will output
each character that goes to the screen and, optionally, a timing file that
lists how much time elapses between characters. Thus you are able to download
the file below and watch exactly, typos and all, what went on
overhead.
Here are the available files:
Content | Timing file (real time) | Timing file (accelerated) |
---|---|---|
shell-scripting | shell-scripting.timing.realtime | shell-scripting.timing |
Or, you can just download this handy-dandy tarball, bri-lfnw-presentations.tgz which contains all the presentation typescripts.
To watch it, run one of the following commands:
# To play the condensed version: $ scriptreplay scripting.timing.realtime scripting # To play the real-time version: $ scriptreplay scripting.timing scripting
Make sure your screen is set to 24x80 so things look right when in vi, etc.
I have a local copy of scriptreplay if you don't have it available on your system already.
I am considering making a 'video' of this as well, and will post those here if I do so.
The presentation was created using /usr/bin/script -t 2>timingfile
,
and the timing files modified with this quick and ugly perl hack:
my($timing, $chars) = split; if ( $chars == 1 ) { $timing = "0.000500"; } elsif ( $timing > 1 ) { $timing = '1.000000'; } print "$timing $chars\n";