Table of Contents

Part 1

Entries

August 29th 2011

Today we learned some basic commands in Unix and were given some time to “play” by using the commands to explore the system.

September 20th 2011

Today we learned about extended command mode for VI and the control key combinations that allow you to do shortcuts for things like cut and paste.These should be useful tools in speeding up things like Shell Scripting assuming i can remember them.

September 27th 2011

Today we wrote a shell script that converts numbers from base 10 (normal numbers) to base 2 (binary). This was useful because it helped understand the thinking process to develop the psuedocode for an assignment in another class where we were to make psuedocode for a binary converter. This was also useful in understand relations between commands for other Shell Scripts.

Septermber 29th

Today we learned how to write the shell script for a basic bot using II or IRC Improved. This was a useful demonstration of how multiple commands work together to form a script and how to look at coding and break it down in a manner that allows you to see what part of the script does what.

Topics

Listing Files

Listing used by typing the command ls. Listing does a variety of things. ls lists current files and directories in whatever directory you may be in while ls -l lists files running on the system, who ran them and the permissions for the files. ls -a is used to find hidden files or directories that are excluded from the standard ls command through use of a . before the name.

lab46:~$ ls
Downloads  Maildir  bin  closet  in  irc  link  longcat  motd  public_html  src  tmp
lab46:~$ ls -a
.              .config      .irssi           .ssh              closet       src
..             .dbus        .local           .viminfo          in           tmp
.117.swp       .fluxbox     .mozilla         .xinitrc          irc
.Xauthority    .gconf       .openoffice.org  .xsession-errors  link
.bash_history  .gconfd      .pine-passfile   Downloads         longcat
.bash_logout   .gvfs        .pinerc          Maildir           motd
.bashrc        .indent.pro  .profile         bin               public_html
lab46:~$ ls -l
total 16
drwxr-xr-x 2 lgottsha lab46    6 Sep 20 15:14 Downloads
lrwxrwxrwx 1 lgottsha lab46   18 Aug 28 10:37 Maildir -> /var/mail/lgottsha
drwxr-xr-x 2 lgottsha lab46 4096 Sep 29 16:46 bin
drwxr-xr-x 2 lgottsha lab46   32 Sep 15 16:17 closet
-rw-r--r-- 1 lgottsha lab46   15 Sep 29 14:59 in
drwx------ 4 lgottsha lab46   39 Sep 29 14:55 irc
lrwxrwxrwx 1 lgottsha lab46    4 Sep  1 14:45 link -> file
-rw-r--r-- 1 lgottsha lab46   58 Sep 13 15:57 longcat
-rw-r--r-- 1 lgottsha lab46 1310 Sep 15 15:15 motd
drwx-----x 2 lgottsha lab46    6 Aug 26  2009 public_html
drwx------ 3 lgottsha lab46   34 Jan 20  2011 src
drwxr-xr-x 2 lgottsha lab46   84 Sep 22 16:46 tmp

Ownership

Ownership is the display of the user who owns a file, owndership can be seen with the ls -l command which displays it in the third column of the results

lab46:~$ ls -l
total 16
drwxr-xr-x 2 //**lgottsha*//* lab46    6 Sep 20 15:14 Downloads
lrwxrwxrwx 1 lgottsha lab46   18 Aug 28 10:37 Maildir -> /var/mail/lgottsha
drwxr-xr-x 2 lgottsha lab46 4096 Sep 29 16:46 bin

Permissions

Permissions are a users consent to access a file, Viewed with the ls -l command there are permissions for editing, opening/ viewing and executable and are displayed as a W, R or X under the ls -l command. Where these are located determines who has which permissions be it the owner, another group or something else.

lrwxrwxrwx* 1 lgottsha lab46   18 Aug 28 10:37 Maildir -> /var/mail/lgottsha
drwxr-xr-x*2 lgottsha lab46 4096 Sep 29 16:46 bin
drwxr-xr-x* 2 lgottsha lab46   32 Sep 15 16:17 closet
-rw-r--r--* 1 lgottsha lab46   15 Sep 29 14:59 in

* indicates the permissions line

VI's Insert Mode

VI text editors insert mode. The mode that allows VI to actually edit text with in a file. Initially entered through the use of lower case “i” after initializing VI there are multiple other commands to enter insert mode.

#!/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


~
~
~
-- INSERT --                                                           1,1           All

A file in VI's insert mode.

VI's Command Mode

VI's command mode is the environment you are in when initially opening VI. In command mode you cannot edit text by typing but can use a variety of commands to perform different functions on the file instead. The simplest commands are :q to quit :w to save your file :wq to save then quit and :q! to quit without saving

#!/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
~
~
~
:q

A file in VI's Command Mode being given the command to quit.

Regular file

regular files are files that are not links or directories most regular files appears gray in color and can be read via the cat command.

lab46:~$ ls
Downloads  Maildir  bin  closet  in*  irc  link  longcat*  motd*  public_html  src  tmp

*indicates the regular files in my directory

Directories

Directories are places where files are stored. Much like folders for GUI users of operating systems like Windows. when shown via the ls command directories are blue and if you have permissions you may enter them via the cd command. The command for a knew directory is mkdir “Directory name”

lab46:~$ ls
Downloads* Maildir  bin*  closet*  in  irc*  link  longcat  motd  public_html*  src*  tmp*

* Indicates the directories within my home directory

Special Files

Files that are neither directories nor regular files. special files are yellow by default and usually device files thatrepresent the hardware components of the machin

lab46:/dev/input$ ls
by-path  event0  event1  mice*  mouse0*

*special files representing the Mouse

Killing a Process

killing a process sends a signal to it telling it to terminate. While there are a variety of kill commands for various situations Kill -9 will kill any process that you can kill. to kil something find the process you want via the ps command and type the kill command followed by the processes PID number.

lab46:~$ ps
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
lgottsha  2449  0.0  0.0   8580   896 pts/38   RN+  12:07   0:00 ps u
lgottsha  7752  0.0  0.1  13640  2008 pts/38   SNs  09:42   0:00 -bash
lgottsha 23924  0.0  0.1  13660  2004 pts/29   SNs  Sep20   0:00 /bin/bash
lgottsha 31149  0.0  0.6 157312  7272 pts/29   SNl+ Sep29   0:00 vi

The kill command for vi in this situation would be kill -9 31146

Shell Scripting

Shell scripting is where a script is written for the shell or command line that causes something to happen. Shell scripts for unix start with the #!/bin/bash line,the initial characters known as sh and bang and the rest of the line specifying that the script is intended to run on the bash shell. Scripts can be used for a variety of things and are considered one of the most basic programming languages.

#!/bin/bash
#B35T 5R1PT 3V4R
echo -n "please enter your name: "
read name #put user input into name
echo "Hi, $name, We've had a slight weapons malfunction here,but we're fine here now, everything fine. How're you?"
exit 0

~

The code of a simple script

Viewing Files

Viewing files is done via the cat command. When viewed the files text will be displayed on screen, however not all files are viewable. When nonviewable files are ran through car they will cause random code to appear on the screen and the user will need to crtl C to unlock their terminal. Only regular files will always be viewable.

lab46:/usr/games$ cat monop
ELF>@@@h@@@@@@À@@@@dqdq hqhq`hq`p qq`q` @@DDPåtdgg@g@Qåt/lib64/ld-linux-x86-64.so.2GNUGNU¬Pßù*Uê6Å
u½«[%+#"$&%' !)*(

3ªÏ ]-bÊ@÷qFjÃî}±2¿V
                    É(!:ÕvérO;  __gmon_start__libc.so.6fflushstrcpygetwexitsprintfsrandfopensetregidperrorsignalputsputchargetpidsbrkcallocstrlengetcharfseekctimestdoutstrcasecmpgetgid__ctype_b_locerrcreatfreadclose__ctype_tolower_locerrx_IO_getc__libc_start_mainwrit%uiee__x/0s`*Ps`Xs``s`hs`ps`xs`ss`_2.2.5s`
s`

The result of using car on a nonviewable file

lab46:~/bin$ cat Password
Ah-ah-ah. You didn't say the magic word.

The result of using cat on the file Password.

Removing files

The windows equivalent of deletion. to remove a file you'd use the rm command followed by the name of the file you want to remove and responding yes to the prompt “remove regular file 'filename'?” with yes. You can only remove files that you have permissions to.

lab46:~$ ls
Downloads  bin     in   link     motd         src  trashfile
Maildir    closet  irc  longcat  public_html  tmp
lab46:~$ rm trashfile
rm: remove regular empty file `trashfile'? yes
lab46:~$ ls
Downloads  Maildir  bin  closet  in  irc  link  longcat  motd  public_html  src  tmp

Objectives

Objective 1

State the course objective; define what that objective entails.

Method

State the method you will use for measuring successful academic/intellectual achievement of this objective.

Measurement

Follow your method and obtain a measurement. Document the results here.

Analysis

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

Experiments

Experiment 1

Question

is it possible to create a “menu” to the games directory using shell scripts?

Resources

www.unix.com google

Hypothesis

That it will be possible to make a link to the games directory and show games available using the cd,echo and ls commands using the echo and cd commands will put the user in the directory and ls will display the avalible games while echo will ask the user to pick a game.

Experiment

With shell script

#!/usr/games
echo -n "would you like to play a game?:"
read word
if [ "$word" = "yes" ]
 then
        echo "`cd /usr/games`"
        echo "`ls`"
        echo "Pick a game, any game..."
else
        echo"THEN, YOU SHALL NOT PASS"
        exit 1
fi
exit 0

Data

Was unable to get directory to change to the games directory. The rest of the script worked well but was useless without the cd.

Analysis

Based on the data collected:

My hypothesis was incorrect, the script failed to execute as expected. Some variable must not be being taken into account.

Conclusions

Concept may be doable but needs something additional to support the CD command. CD will not execute because the script is taking place in a subshell.

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.

Experiment 3

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.