Table of Contents

Part 2

Entries

October 4th, 2011

Today we played with regular expressions in class and used them to sort through the dictionary. We learned regular expressions are helpful in finding things when you don't know exactly what you're looking for or don't know all of what your looking for.

October 6th, 2011

Today we learned more regular expressions and were given time to play. Haas helped me figure out how to do the basics of my Spambot idea so he can now scream at anyone who talks to him ^.^

October 13th, 2011

Today we played a bit with C programming after a conversation about the death of bills gates vs. the death of the producer of C. We wrote a script in C and then made the same script in Bash.

October 27th,2011

Today we had playtime to protest the cursed snow that has arrived early. I spent some time working on my bot.

unix Topics

Text Processing

Text Processing is the simple act of typing in a text editor. Unix has two main text editors. Nano, and VI. It's a lot like wordpad versus microsoft word. Nano is about as basic as you can get with nothing aside from the ability to enter text and save text files. VI, the “greatest text editor” ever however comes with a whole bunch of useful commands that allow you to edit your text in it's command mode, as well as an insert mode that allows you to simply edit text.

Compression/Decompression

Compressing a file reduces it's size but makes it completely unacessable until it's Decompressed. The compression command for a file is gzip while the command to Decompress it gunzip. An example is shown below.

lab46:~$ ls
Datatypes.c  Hello.s  bin         data       dl     irc      motd     tmp
Downloads    Maildir  closet      datatyes   hello  link     scripts  uhoh
Hello.c      bashex   cscript2.c  datatypes  in     longcat  src
lab46:~$ gziplongcat
-bash: gziplongcat: command not found
lab46:~$ gzip longcat
lab46:~$ ls
Datatypes.c  Hello.s  bin         data       dl     irc         motd     tmp
Downloads    Maildir  closet      datatyes   hello  link        scripts  uhoh
Hello.c      bashex   cscript2.c  datatypes  in     longcat.gz  src
lab46:~$ gunzip longcat.gz
lab46:~$ ls
Datatypes.c  Hello.s  bin         data       dl     irc      motd     tmp
Downloads    Maildir  closet      datatyes   hello  link     scripts  uhoh
Hello.c      bashex   cscript2.c  datatypes  in     longcat  src

Moving/Renaming

Moving and renaming files are done with the move command mv. To rename a file you simply type mv followed by the filename and new desired name. To move them you type the name of the file followed by the directory you wish to put them in. Examples provided below.

lab46:~$
lab46:~$ ls
Datatypes.c  Hello.s  bin         data       dl     irc      motd     tmp
Downloads    Maildir  closet      datatyes   hello  link     scripts  uhoh
Hello.c      bashex   cscript2.c  datatypes  in     longcat  src
lab46:~$ mv longcat Catgnol
lab46:~$ ls
Catgnol      Hello.c  bashex  cscript2.c  datatypes  in    motd     tmp
Datatypes.c  Hello.s  bin     data        dl         irc   scripts  uhoh
Downloads    Maildir  closet  datatyes    hello      link  src
lab46:~$ mv Catgnol /closet
mv: cannot create regular file `/closet': Permission denied
lab46:~$ mv Catgnol bin
lab46:~$ ls
Datatypes.c  Hello.s  bin         data       dl     irc   scripts  uhoh
Downloads    Maildir  closet      datatyes   hello  link  src
Hello.c      bashex   cscript2.c  datatypes  in     motd  tmp
lab46:~$

Creating Files

There are multiple ways to make files in Unix. You can create it with the Touch command by type “Touch” followed by the filename. You can also create a file using text editors Nano and VI by saving a blank document as the filename. An Example of the Touch Command is shown below.

lab46:~$ ls
Datatypes.c  Hello.s  bin         data       dl     irc   scripts  uhoh
Downloads    Maildir  closet      datatyes   hello  link  src
Hello.c      bashex   cscript2.c  datatypes  in     motd  tmp
lab46:~$ touch AllHallowed
lab46:~$ ls
AllHallowed  Hello.c  bashex  cscript2.c  datatypes  in    motd     tmp
Datatypes.c  Hello.s  bin     data        dl         irc   scripts  uhoh
Downloads    Maildir  closet  datatyes    hello      link  src
lab46:~$


Linking Files

Linking files is done with the ln command. Using ln -s and the filename followed by the linkname to create a link. An example is show below.

lab46:~$ ls
AllHallowed  Hello.c  bashex  cscript2.c  datatypes  in    motd     tmp
Datatypes.c  Hello.s  bin     data        dl         irc   scripts  uhoh
Downloads    Maildir  closet  datatyes    hello      link  src
lab46:~$ ln -s AllHallowed click
lab46:~$ ls
AllHallowed  Hello.c  bashex  closet      datatyes   hello  link     src
Datatypes.c  Hello.s  bin     cscript2.c  datatypes  in     motd     tmp
Downloads    Maildir  click   data        dl         irc    scripts  uhoh
lab46:~$ click
-bash: click: command not found
lab46:~$ cat click
Happy Halloween
lab46:~$

Copying Files

Copying a file just like on a GUI system like windows creates an exact duplicate of the file. Copying is done with the CP command followed by the file you wish to copy and the name of the new file. An example is shown below.

lab46:~/bin$ ls
Binary   Doomsday  Password  Script1.sh  Script3.sh  Script5.sh  Spambot2.0  opusresults
Catgnol  IIRC      Project   Script2.sh  Script4.sh  Spambot     hallow
lab46:~/bin$ cp Password JPRef
lab46:~/bin$ ls
Binary   Doomsday  JPRef     Project     Script2.sh  Script4.sh  Spambot     hallow
Catgnol  IIRC      Password  Script1.sh  Script3.sh  Script5.sh  Spambot2.0  opusresults
lab46:~/bin$ cat Password JPRef
Ah-ah-ah. You didn't say the magic word.

Ah-ah-ah. You didn't say the magic word.

C

C is a programming language that can be found on most computers today. Considered a 'lower' language, C can assume certain things such as using the word add instead of the addition symbol. Below is an example of C code.

#include <stdio.h>

int main() {
    printf("Hello, world!\n");
    return 0;
}

Tab Completion

When typing on Unix, on the command line and then pressing tab after typing a partial command or filename will complete the file name. However if multiple files have the same beginning then you must put enough of the file name to differentiate them or tab complete wont' work.

wildcards

A wild card is used to find part of a file name or find part of a term within a file and can be used to find files when you only have a part of their name or data. An example is shown below.

lab46:/usr$
lab46:/usr$ ls
bin  games  include  lib  lib32  lib64  local  man  sbin  share  src
lab46:/usr$ ls  *[aeiouy]|wc -l
375
lab46:/usr$

375 files end in a vowel within the usr directory

Regular expression

Can be used to find information within files an examples is below

lab46:~$ ls
AllHallowed  Downloads  Hello.s  bashex  closet      data      datatypes  hello  irc   motd     src  uhoh
Datatypes.c  Hello.c    Maildir  bin     cscript2.c  datatyes  dl         in     link  scripts  tmp
lab46:~$ cat Datatypes.c |grep '^[one]*$'|less|wc -l
1
lab46:~$

The Datatypes.c files has exactly one “one” in it.

Local Host

The local host is the host upon which your directly accessing from your location. in the case of our Unix class the local hos would be the Lab46 server.

Remote Hosts

A remote host differs from a local host in that it isn't part of the sever or system that you are on but you can access it. An examples of this would be running a program off of cloud storage.

unix Objective

Objective

Understand the workings of Shell scriptings

Method

Pick apart one of the scripts we do in class and see if i can understand how things work.

Measurement

I was able to understand the basics of how our Binary Number Converter worked.

#!/bin/bash
a=0
echo -n "Please enter a Number: "
read number
until [ $number -eq 0 ]; do
n=0
until [ `echo "$number-2^$n"|bc` -lt 0 ];do
let n=$n+1
done
let n=$n-1
let number=$number-`echo "2^$n"|bc`
places=""
for((i=0;i<$n;i++)); do
places="${places}0"
done
places="1${places}"
let a=$a+$places
done
echo "the binary value is $a"
exit 0
lab46:~/bin$

Analysis

Reflect upon your results of the measurement to ascertain your achievement of the particular course objective.

A.I think i did acceptably at it. B.There's always room for improvement. C. Not really. Measuring your understanding can't really be given an exact definition D. Yes because it makes it a bit easier when writing code for scripting E. Not really. Most of it's just experience.

Experiments

Experiment 1

Question

What is the question you'd like to pose for experimentation? State it here.

Resources

Collect information and resources (such as URLs of web resources), and comment on knowledge obtained that you think will provide useful background information to aid in performing the experiment.

Hypothesis

Based on what you've read with respect to your original posed question, what do you think will be the result of your experiment (ie an educated guess based on the facts known). This is done before actually performing the experiment.

State your rationale.

Experiment

How are you going to test your hypothesis? What is the structure of your experiment?

Data

Perform your experiment, and collect/document the results here.

Analysis

Based on the data collected:

Conclusions

What can you ascertain based on the experiment performed and data collected? Document your findings here; make a statement as to any discoveries you've made.

Experiment 2

Question

What is the question you'd like to pose for experimentation? State it here.

Resources

Collect information and resources (such as URLs of web resources), and comment on knowledge obtained that you think will provide useful background information to aid in performing the experiment.

Hypothesis

Based on what you've read with respect to your original posed question, what do you think will be the result of your experiment (ie an educated guess based on the facts known). This is done before actually performing the experiment.

State your rationale.

Experiment

How are you going to test your hypothesis? What is the structure of your experiment?

Data

Perform your experiment, and collect/document the results here.

Analysis

Based on the data collected:

Conclusions

What can you ascertain based on the experiment performed and data collected? Document your findings here; make a statement as to any discoveries you've made.

Retest

If you're doing an experiment instead of a retest, delete this section.

If you've opted to test the experiment of someone else, delete the experiment section and steps above; perform the following steps:

State Experiment

Whose existing experiment are you going to retest? Prove the URL, note the author, and restate their question.

Resources

Evaluate their resources and commentary. Answer the following questions:

Hypothesis

State their experiment's hypothesis. Answer the following questions:

Experiment

Follow the steps given to recreate the original experiment. Answer the following questions:

Data

Publish the data you have gained from your performing of the experiment here.

Analysis

Answer the following:

Conclusions

Answer the following: