This page contains some links to material covered during UNIX 101 and 102, as well as some extracurricular content for you to review in your free time.

The text file for the great editor race is available here.

To begin with the first exercise, you will need the following file. To download it and untar it, execute the following commands:

      wget http://csclub.uwaterloo.ca/unix102/vim_exercise.tar
      tar -xvf vim_exercise.tar
    

You can also download the slides or cheatsheet handout from UNIX 101.

First and foremost, make sure you have tried running vimtutor. This program is available on the CSC systems, as well as the student.cs and student.math environments. Try the following commands from a shell:

      ssh userid@linux.student.cs.uwaterloo.ca
      vimtutor
    
This document from sourceforge should also prove to be useful.

From the GNU bash reference manual (a very good source of information, albeit a little arcane and verbose):

Here are some example bash scripts covered in today's lecture:

  • Simple script whose parameters are any number of text files, that will print all the files and filenames to standard output: appender
  • RunC clone, that takes in a filename and executes all the tests it can find for it in the current directory: WalkC
  • Script that scrapes concert website for tickets and sends emails/text messages when tickets are available: tickets_email

This page is a good brief reference for regular expressions.

Look to the gitref for a git reference, of course. As well, here's an article I found claiming to list the top 10 git tutorials. Whether or not that's true, you should still learn something. Here is also a brief review of the commands we intended to cover today.

This clones a copy of the codebase for you to work on locally:

      git clone
    
This "pulls" (updates with) any new changes others have made since you last worked on the code, so they are now part of your local code:
      git pull
    
This adds new files to the git repository:
      git add [files]
    
This commits any of the changes that you've recently made in [files] (or -a for everything), getting ready to "push" the changes to other users:
      git commit [files] (-a)
    
This "pushes" (sends) your changes back to the "master" repository, allowing other people working on the project to "pull" your changes.
      git push
    

You might be surprised - almost all the information on this page was at one point found using Google. Remember, your best resources for learning more about UNIX are your friends, your manpages, and the internet. So fire up your favorite search engine, and get learning!